{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from __future__ import print_function\n",
    "import argparse\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "import torch.optim as optim\n",
    "from torchvision import datasets, transforms, models\n",
    "from torch.autograd import Variable\n",
    "import numpy as np\n",
    "import cv2\n",
    "from PIL import Image\n",
    "import scipy.misc\n",
    "import matplotlib.pyplot as plt\n",
    "import torchvision\n",
    "import sys\n",
    "sys.path.append('cifar/')\n",
    "from model import cifar10\n",
    "import torch.optim as optim"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Training settings\n",
    "data = '/home/user/datasets/Traffic_Sign/gtsrb-german-traffic-sign'\n",
    "batch_size = 64\n",
    "epochs = 100\n",
    "lr = 0.0001\n",
    "seed = 1\n",
    "log_interval = 10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Using GPU\n"
     ]
    }
   ],
   "source": [
    "if torch.cuda.is_available():\n",
    "    use_gpu = True\n",
    "    print(\"Using GPU\")\n",
    "else:\n",
    "\tuse_gpu = False\n",
    "\tprint(\"Using CPU\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "FloatTensor = torch.cuda.FloatTensor if use_gpu else torch.FloatTensor\n",
    "LongTensor = torch.cuda.LongTensor if use_gpu else torch.LongTensor\n",
    "ByteTensor = torch.cuda.ByteTensor if use_gpu else torch.ByteTensor\n",
    "Tensor = FloatTensor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Sequential(\n",
      "  (0): Conv2d(3, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "  (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=False, track_running_stats=True)\n",
      "  (2): ReLU()\n",
      "  (3): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "  (4): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=False, track_running_stats=True)\n",
      "  (5): ReLU()\n",
      "  (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  (7): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "  (8): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=True)\n",
      "  (9): ReLU()\n",
      "  (10): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "  (11): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=True)\n",
      "  (12): ReLU()\n",
      "  (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  (14): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "  (15): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=False, track_running_stats=True)\n",
      "  (16): ReLU()\n",
      "  (17): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "  (18): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=False, track_running_stats=True)\n",
      "  (19): ReLU()\n",
      "  (20): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      ")\n",
      "Sequential(\n",
      "  (0): Linear(in_features=8192, out_features=43, bias=True)\n",
      ")\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "CIFAR(\n",
       "  (features): Sequential(\n",
       "    (0): Conv2d(3, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=False, track_running_stats=True)\n",
       "    (2): ReLU()\n",
       "    (3): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (4): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=False, track_running_stats=True)\n",
       "    (5): ReLU()\n",
       "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
       "    (7): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (8): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=True)\n",
       "    (9): ReLU()\n",
       "    (10): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (11): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=True)\n",
       "    (12): ReLU()\n",
       "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
       "    (14): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (15): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=False, track_running_stats=True)\n",
       "    (16): ReLU()\n",
       "    (17): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (18): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=False, track_running_stats=True)\n",
       "    (19): ReLU()\n",
       "    (20): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
       "  )\n",
       "  (classifier): Sequential(\n",
       "    (0): Linear(in_features=8192, out_features=43, bias=True)\n",
       "  )\n",
       ")"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "net = cifar10(128)\n",
    "\n",
    "#try with alexnet\n",
    "# net = models.alexnet(pretrained=True)\n",
    "\n",
    "# num_ftrs = net.classifier[6].in_features\n",
    "# net.classifier[6] = nn.Linear(num_ftrs, 10)\n",
    "device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
    "\n",
    "net = net.to(device)\n",
    "net.load_state_dict(torch.load(\"gtsrb_newnetwork.pth\"))\n",
    "net.eval()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# This is GradCAM implementation\n",
    "from grad_cam import (\n",
    "    BackPropagation,\n",
    "    Deconvnet,\n",
    "    GradCAM,\n",
    "    GuidedBackPropagation,\n",
    "    occlusion_sensitivity,\n",
    ")\n",
    "target_layer = \"features.12\"\n",
    "gcam = GradCAM(model=net)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create test loader\n",
    "import pandas as pd\n",
    "target_frame = pd.read_csv('/home/user/datasets/Traffic_Sign/gtsrb-german-traffic-sign/Test_result.csv')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_transform = transforms.Compose([\n",
    "        transforms.Resize(32),\n",
    "        transforms.CenterCrop(32),\n",
    "        transforms.ToTensor(),\n",
    "#         transforms.Normalize(mean, std),\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "from torch.utils.data import Dataset\n",
    "import os\n",
    "from skimage import io\n",
    "\n",
    "class TestDataset(Dataset):\n",
    "    def __init__(self, csv_file, root_dir, transform=None):\n",
    "        \"\"\"\n",
    "        Args:\n",
    "            csv_file (string): Path to the csv file with annotations.\n",
    "            root_dir (string): Directory with all the images.\n",
    "            transform (callable, optional): Optional transform to be applied\n",
    "                on a sample.\n",
    "        \"\"\"\n",
    "        self.target_frame = pd.read_csv(csv_file)\n",
    "#         self.pic_file = target_frame.iloc[:,3]\n",
    "#         self.target_class = target_frame.iloc[:,0]\n",
    "        self.root_dir = root_dir\n",
    "        self.transform = transform\n",
    "\n",
    "    def __len__(self):\n",
    "        return len(self.target_frame)\n",
    "\n",
    "    def __getitem__(self, idx):\n",
    "        img_name = os.path.join(self.root_dir,\n",
    "                                self.target_frame.iloc[idx, 3])\n",
    "#         image = io.imread(img_name) # return a ndarray\n",
    "        image = Image.open(img_name)\n",
    "        \n",
    "        target = self.target_frame.iloc[idx, 0]\n",
    "\n",
    "        if self.transform:\n",
    "            image = self.transform(image)\n",
    "\n",
    "        return (image, target)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "testset = TestDataset(csv_file='/home/user/datasets/Traffic_Sign/gtsrb-german-traffic-sign/Test_result.csv', root_dir=\"/home/user/datasets/Traffic_Sign/gtsrb-german-traffic-sign/test_images/\", transform=test_transform)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "testloader = torch.utils.data.DataLoader(\n",
    "    testset, batch_size=4, shuffle=False, pin_memory=True)\n",
    "classes = list(range(43))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "def imgshow(img):\n",
    "#     img = unnormalize(img, mean, std)\n",
    "    npimg = img.cpu().numpy()\n",
    "    plt.imshow(np.transpose(npimg, (1, 2, 0)))\n",
    "    plt.show()\n",
    "\n",
    "def imgshow_imgs(imgs):\n",
    "    imgshow(torchvision.utils.make_grid(imgs))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([3, 32, 32])\n",
      "16\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([3, 32, 32])\n",
      "1\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([3, 32, 32])\n",
      "38\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([3, 32, 32])\n",
      "33\n"
     ]
    }
   ],
   "source": [
    "# Test some images from testset\n",
    "from PIL import Image\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "for i in range(len(testset)):\n",
    "    sample = testset[i]\n",
    "    image, target = sample\n",
    "\n",
    "    imgshow(image)\n",
    "    \n",
    "    print(image.shape)\n",
    "    print(target)\n",
    "    \n",
    "    if i == 3:\n",
    "#         plt.show()\n",
    "        break"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "from PIL import Image, ImageDraw, ImageColor\n",
    "yellow = ImageColor.getrgb(\"yellow\")\n",
    "def poison(imgs):\n",
    "    newimgs = list(range(imgs.shape[0]))\n",
    "    for i in range(len(imgs)):\n",
    "        img = imgs[i]\n",
    "        npimg = img.cpu().numpy()\n",
    "        npimg = np.transpose(npimg, (1, 2, 0))\n",
    "\n",
    "        im = Image.fromarray(np.uint8(npimg*255))\n",
    "        draw = ImageDraw.Draw(im)\n",
    "        x_ori = 16\n",
    "        y_ori = 24\n",
    "        offset = 5\n",
    "        draw.rectangle(xy=(x_ori,y_ori,x_ori + offset,y_ori + offset), fill=yellow)\n",
    "        newimg = np.array(im)\n",
    "        newimg = newimg/255.0\n",
    "        newimg = np.transpose(newimg, (2, 0, 1))\n",
    "\n",
    "        newimgs[i] = newimg\n",
    "    return torch.from_numpy(np.asarray(newimgs))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "yellow = ImageColor.getrgb(\"yellow\")\n",
    "def poison_one(imgs):\n",
    "    img = imgs\n",
    "    npimg = img.cpu().numpy()\n",
    "    npimg = np.transpose(npimg, (1, 2, 0))\n",
    "    \n",
    "    im = Image.fromarray(np.uint8(npimg*255))\n",
    "    draw = ImageDraw.Draw(im)\n",
    "    x_ori = 16\n",
    "    y_ori = 24\n",
    "    offset = 5\n",
    "    draw.rectangle(xy=(x_ori,y_ori,x_ori + offset,y_ori + offset), fill=yellow)\n",
    "    \n",
    "    newimg = np.array(im)/255.0\n",
    "    newimg = np.transpose(newimg, (2, 0, 1))\n",
    "    return torch.from_numpy(np.asarray(newimg))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor(0.7176)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor(1.)\n"
     ]
    }
   ],
   "source": [
    "# Test poison one tensor\n",
    "dataiter = iter(testloader)\n",
    "images, labels = dataiter.next()\n",
    "imgshow(images[0])\n",
    "print(images[0].max())\n",
    "images[0] = poison_one(images[0])\n",
    "imgshow(images[0])\n",
    "print(images[0].max())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor(1.)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAB6CAYAAACvHqiXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJztvXmQXed1H/j77n37e73vQDeAxkqCO0VRFEVtlGxLiixpZiJFGidRVVSjmqqkJp5yJpbHqfKkPFOOy9k8lcRTrNgWnVIkWY5sKbJlSaFEbeYqbiCJfW+g0Y3eXvfrt7/7zR/nfPech14ANCgA3fl+VWQ/fPe+e7/t3nfO+Z3FWGvh4eHh4bH5EdzqDnh4eHh4vDXwL3QPDw+PLQL/Qvfw8PDYIvAvdA8PD48tAv9C9/Dw8Ngi8C90Dw8Pjy0C/0L38PDw2CK4oRe6MeZDxpijxpgTxpgvvFWd8vDw8PC4fpiNBhYZY0IAxwD8AoAJAC8A+Iy19s23rnseHh4eHteKxA1892EAJ6y1pwDAGPMVAB8HsOYL3Rjjw1I9PDw8rh8z1tqBq510IyaX7QDOq39PcJuHh4eHx1uLs9dy0o1I6GaVthUSuDHm8wA+fwP38fDw8PC4BtzIC30CwJj69yiAi1eeZK19AsATgDe5eHh4ePw8cSMmlxcA7DPGjBtjUgA+DeCbb023PDw8PDyuFxuW0K21TWPMPwLwHQAhgD+y1r5xvdf5J//yz+lD1Irb3K+MVb83Fi2+b+QadGf4Gg1pC2oAgGSqN26K+HrWNulvqxYfM4YsSEZNSau1QJcy0mZNyH1M8TWkI81Gma+v+s2fjeqw8yxqNGkslfJCfCyTydG1okjOp1uiUl6O2770+78Ojff94rviz2MdSQBAGKl7JqltqSrzXI866Lw09bF48Ux8rDhbAgDUWmJZs0EBANC98z1x22Of/iQAYLirTufPXoiPzU2S2e/SuVNx2yR/nrl0Sa5bpz6F3N2EWlu3Qg1l4EuGNCH5VDJuy6ZoPZoBHUskUvGxfJo+dyTCuK3ByuLXvvffcCXedc9B6pfyAIvcZ6M64pqsrJWDWccgaZW1Mmo/1HbPeF+r8218U3Wv+LSg7Vpt12jrj+VDIVbC8qX0F8wVfwHD9zKB3O35Q6+3Xemj770j/tzgvWhNPW7r6c0AAHbvEq5vz+4+AMDYjh4AwPDIgfhYuULrPTzUEbft2MXPY7goI1ik68794DUAwOzZ7vhY/55PAAB6H9gbtzW7ngEAVCa+ErcVauM0vvzbAAAL9apcv3EZAJCHtJWK9Gx++6kfxm2dIzT+Q4fpmTg9Ic+GqdO74kCf9O3xBx4EADz4T/4dNoobMbnAWvtXAP7qRq7h4eHh4fHW4IZe6G8JnCgTKKnWCQJKSjUsaQQhnRe15Jj7FIQynIAlaQORQgxf2DipOcysvKfSCsKgt+3ebf3l84KEnJ/MZPmeglgrUHKTk24C7luvGY6PNVst11k5n0dolRZzJSItOBrXJzk/ajX5oFw34LFk0mkAQCkh82d4PUzbPNP1TCRSVrpBUkrIc+rWBwBClvLahD0ei5bsLH82cNqMfCFwa6bHx1J4Uw26xdpOKp3g60u/nZLRUNdtrcrpE1I8Btt2U7tmW/wYtcV08H5d6SfQpnk6yT8S8V1dnuelbW2dJrniVlfcH/zdsO0+dK+VGoW7l5yn999K2GiVflyByqJozCZFe6wZyB6bXqI9WZkpxm2LXfQ31UXfvXt8X3zs1NwMAODEpFB108vzAIBcWdruHn4UANB919sBAGFlNj4WTZIRodI4Hbclu47Rsbkp6XyStLpqnvp9qSbafLlF0nVGKTilIh0/O12K2xLL5AQ4X6Jj1qTjY5kEzVxPqjNu293dhxuFD/338PDw2CLwL3QPDw+PLYJbbnIxZqX659S+UKnlzkzirDDGaNXekaJKjY+JH222caQo/Vurw61Y41VkZHx4JSkVmNXUYdLBtGkkNi0oU4QzA8XkqZqDwK5U9x2h6q6/GhR3iXpsqlp5XW3+SIT0j6jGJLEiyZzZxoRqTkO6Xj5VjtvSc0T0dPSMAgBSaSEjww4yQdU7RdWsd7MZpiYdWSrSvZoNJovbzAPug8xfnee+pQjpRJKOF9y8aWKVzUZ1tZ9Cs7Ysk+Yx6J3pzHXaxuC2m41WmikcAr22cdeU6SdqN3W0U5Fuf+h7Gr6G3k9u/7NpTpnahM5Ue9jN32r8q2Wzmt5/sYlQP19X3mElmkZMmlFEhGZNmfBQZjPG/FLcVLxcoe/uoOsms3J+OkfnX5g+F7fNThG5PgIxiZyePgEAGHvkYQBAtksI04UZIm5LR9Ue5u2Z7Lw7bjtXm6P+JOj8iWpF+lgnc1BDMfWLbD66vCDmyPIl7mdIjg5hKM9BMkFzE6XF5JLouWog6FXhJXQPDw+PLYJbL6Gv4prl2qwmRU078aQlTUfQROp8Ryq28Zlwkgn9bTab8bFWg37hW9o9qdXgeyspi13mEkzyJJIihQT8qwslScfdjHRHuG+rSHQi8q8k2My6FJS+xsrznYAZKcmr2SRprM5SmZaCHTGYTopUYbqIJL5n/1Dc9o5uGutAjs5bSsj5rSGSOMrdIrXbA/TdxuRM3DZxniS0I+eJqDq9MBcfW2AprqrEyaobixpf2Wl1LAF2KYK3m8nyslqXxjpzGfIYEm2+h1b9n1ucVB1LzfoY/Q2McseN+63uFZOnNN9hKHOVSJKGk83n5XxeDxNk4zbnrVup0LwtLQsJWG/S/CU00cw90FvSirpB11+FiA3aiH3+i7VRUW6ijgttKQk9Zanj3XV5DkdrNP4s36uWlT3ZPUzS7FBNxm6r1DaYz8VtS3NOA+bnPS33LIOk9UpTJO6wm1wUC3e8PW57/k1yZ528+AIAYHlJpHzn+rtYl/HVIupTmJF+JOvkyhjxOLXThuX3yBRk7C+X5B4bhZfQPTw8PLYI/Avdw8PDY4vglptcnAqWUDYU5urQUr83TuN23GKkCdA4GE5F4LE/dxSJSlPnSMvKPKmkpWnxXV3mCMdqSUwBLVbLdAqaMEmqUiebH3oGdsTHOgeYGOxV/qRZcqyNVLSp073NKuaVCA0ek/IX57GaxNrL1WaeEvvKinvqNufyHvAxaxWZ5kjGTvGR/9hjvwQAeGhU1EpznrIlF88dBQAslMSn2HBEbr5LTAYZ9v3fnt8ft739wX4AwNTdJwEAL5x4LT72yskJAMDRyfm4rdlkIlGJIwlnAmD/eeerTp+pLadiHep2bVkmGTpf9pURnSspfCBEO9kOiDlNRwi7ywUJiXBNpWlu0mmKwg1SPXKNJO2dIKnMMGySyaclWrIrR3OazdF+na+K6n55kfZ88aLs9dYyzWldmRed275ZJdbBxPO2ChUarGI2ZJQSQjxuGyBTUSEl65Lkw0MQf/U9WZqHvKXzW0kxr3T20VwVEnviNlsmE15CTX7nKLcFZIJKjoiJEBdpzNmMjHPkTkpJtTgohObMWdq7kzV+B1QlSrtao+/WoBwA8rQeQ539cZspU38Xl8g3vdwQM0/T0OcZZfr5zhvP4EbhJXQPDw+PLYJbLqHHQaH6tyXO+6Ak19hfcaV7lzur1ZBf2Ba7GS1eOhO3zZyhKLGlC8fpmosijZtm3d1I2lwEo2KInCxRZVeu6fCV+Fi6k36R+/aMxm3DByjHSq5/t4yFpbLYS9BqV0k3Tu2i6Ai5td0WlXAd554JoKUtGkOotQ03cxxFalJC8OYyJJm/8+0Pxm0f2UbSUnBMJOipC5MAgMYikW/Zlkhb7vqJUPod8bimEiLlNztIuundTfPy+C7JAXJw9L0AgKePSI6MZ46TK1mxImNJMgGXZsm81lJj57UaTGs3urWjbl20a6AkdKf92WgVKRUro1kD5+oXijSeTnEkcVak63qCcnksMME2Py8XWV6mPdyoiVtfkyNitSSWCGgsvf3Ut54eyV90707KWbLvHtGIZhYOAwBOX5BoydYSaVYh5zdqc58M2klG+sdK8vRKHF2ejD/v2kWax0ffJq6Bo1la79kJcUOsLlCelB1dgwCAoZRI6O7pOzwlz+2ZM6RtFAKZ523sprh3F52f2vt4fKw7oshTWxLJuNpD2t/FQ9+O22qnaI8N5UhjSHR1xceavHdKNdlDjYg0inxWXql51tQ7a7TXyxWJIq3x+6YZygQ2A3G93Ci8hO7h4eGxReBf6B4eHh5bBLfc5OJMHJGO/OS/xmqlllVNs1L1bTXoWElFnM2fPQIAmD3+ctzWnCUV0KWuNMok0XJkWlL5kK+iTxp3X1a7gpYQS5UZIk4mlsQPuDRLn7ftfzhu691Hn8M8E6arqPYqWxicArxeQW9tcnERhjoJU3w5dVmXfjbNRGU1Lertw/sfAQB8Zqek98SRn9J5k5fjplaZzDUJjoIL0rKOzo871P1oOn9/Icya0xTtN79E40sVxGRV2Ea+7J98x3vjtj3dpMJ+55CUrz1doglosPkoYUQFN2x+WdRxCqvSm4TikttHOkftavEBbGoJXBSunJ9k8046IwR5I02E2VJLTD9T7HK/UKL5KNdUMrQG+6braGqzciHdtpi9wPN3SdIxXzpL+3/PmPRj53byu75rnxD6Fy6QObK8QAmlTEvMlyZOdCeI3IZbZ08+8nc+GH8OTv4NAKDPSt/uHaS9NQXZY68VKUHW8efJrDfeI3uhYy+Z4sKk1NW5XCbzy+SMPHM7HqKUt+HYL1C/IyH2Owdoj1eskOwzp8ncVJrZGbftL1CfZtmXPDUgJpcwy44RWXledu2hNL+de8RcaHhNq0yKauk5TPP+VCmg3bvnt/6f72Kj8BK6h4eHxxbBVSV0Y8wfAfgogGlr7d3c1gvgqwB2ATgD4FPWqp+864DzoguUiNmKU86qfBWBSzPantMFAJZn6dZTx6W+xvwJivCKFsRdK7Akdbhfx3yvuDPlhunXOdcpbSmO+oqUtFxjNzAneS9OTcixErk+2opIN/OniHhqlUQiBROH/fsforHlxdUJ8dijlW3rSehqQlqO8NMEXmJl8QOnFQVM0r53l9T4fmSIScYzh+K2xhKTNn2Sc6L7Dpq3wnZyJescEqnFJJnMVRFwi5zfYub0WekHi6nNIp3XmpHiF83lH9G1rBTweO+BDwMAapFoR8uvUeGMuTpHDasIzYgJqHpdRy6uLctkMpzHpi1ckua3pea5wZvXFSMJlWtqyJGcVUiujqUqtc0syzVm52lfuHTQRodvxmS4blvpQhhrcPy32pRj5znHyNwxmdPFRZIY7x0X6XdwiMjTi6zhlOZlfdLGpTyW+UvxWBPrsKK/+imR0FMTRNTuqIiEHvI858NC3BadJu1lKUFtPz4iKW3NGerHfEWepQRoTrcfeIect+MxAMAPX+axz5yIjzVZkyvPC0G5OEP7z0DmY+fY/QCAoVHq99ge0XAKXfT+0GR/Lsf5WrLiooscu06Dxjw5pSKgL/MYVFEea8Xld6O4Fgn9iwA+dEXbFwA8Za3dB+Ap/reHh4eHxy3EVSV0a+2PjDG7rmj+OID38ecnATwN4NexITjJWxCyNKQlUicku+x05aI4+l86QZL53LHn47ZokaTldCiSWtfgCACgbxfZu7rG74yPpXpJOk2kxFYWF93QmflcNsQGXXduUspKXTr+EgBg9ri49WGRJIzStEgak4d+QpcFSY49d7w7PtZKc2CJkoZi90O7tjSkA6hareaK44lVhPsyt/X3k43xfd2D8bH+8yTxBiXRNjrvICmo7/1aGiJ3zKCDJNEwqe3OvKqqb51sQx+6IBLj0hvEd0y/+B0AwOLRI/ExWyJNqHjshbitVqd7Pnrg/XFbsUxBHt85QcUKaipzZMK5NJqV+2k17NxN85BSVmOXnbHclPkosqRYqXK2SiPuiE1DWtdiQ9wzp5fpvHpNrtGRpr7VWyT11RsisUWrFDtB/GzoeW4fk20LyKPGUlOesONsY9eS/8HdtP87+si+PrsokjQapDklVObNpAvWSq39Cnn/TsmNEgzuor+l6bgt1SIp2czLvUYXstxHer5fL8rzm5imfuzuFY32ngMkSTe2Cx/wvRO0x372HPEBSwviotjicodNVYrRTXmYEul6PEv76Z5uXtMlyVEUcBBiaVrcPgv8nkkHstcri7Q/TnFQ3GX1ui30kpY72CH3rMyJNWGj2KgNfchaOwkA/HfwKud7eHh4ePyc8XP3cjHGfB7A53/e9/Hw8PD47x0bfaFPGWNGrLWTxpgRANNrnWitfQLAEwBgdFIUhnP1ilar36hznLDGWF8m/WjhvFSSXzz9Kp2zKCpLKkFfGNopqtjQnZzwfjtVdUdO5Vzh/B1NXYOUE1zofBzOjBBkSUXuHZcI0I6BbQCAQq+Qi+dfJVIvuiwk0+I0mRHCI2SiyfeJW1W4jVRIG+oIOVfLE2sioaYvxXpXuEpUY1LlM0GC1MqeXiJ+utX59RLNc2vXwbht7DOfoevu2HgifpfjP9wn18jsoCjGngfJJDbx7W/Gx87/gNzuTFGiCZfPkDqezYm729v2Eql3kknw0/PKj5PJq5YisXQN2yuRZDNCtSqmkSTXKu3qEJPc7p2kmAZcK/J8UXJ7HJmk8+cXZU7z/PHuMRn78DDtmYtcd/K1cxJduTjHfgZtUa+ulqfuf3uenlWjqJWJZondIU9NiamjP0f7bddeel527rovPjZ9iSKrw6YQiS630kJj7YjbvoTUA60n6DkpJ8XUNl8lk8Vc8WjctlihucywKerSRYmeHOnfBQDYc1BcgAfGyIXxby4KofitHxIJevEMO1CIFQshm+KSVtbKcG7fak1eh1NnyLyzwJVjZkpiMu201O9MVUwuwxnaK6Yk61e8SCToscvUt6lAzDbdQ7Tu6BfzUUrli9koNmpy+SaAz/LnzwL4xg33xMPDw8PjhnAtbotfBhGg/caYCQC/BeBfAPhTY8znAJwD8MmNdsCVt2rPUuLYHU0GEdmwPE9Sy8JZ+VVvchm0jCIkuobol2/wzofitvwY5ZGIskQ8Rir/Q+DuaVZKQ3qaAldgwxXLUGJzqpNcrobukHu2OCPbxee/I21FktZL0zSWubNCog70EillEiJBOFLWRmuL6FryDuPfaZkPx+tqHak7R4TPjgLPw5xIF6kcSe1DH/zFuC3YRnNaVxpLk+fNzaTeUKvxjs7tb1GtbYkDKtKjNG/bPiYZB+vLFORz7mlxn0zUad7q85JHp4u1nHuGqd/zixJoMuMybyoJPRGuzYpaQ/dPpBUhl6SRhSpTYoPLqkVcam1RBHo4Hm6pLFLX9gKdt1sFqRzcTVpJMUHkWD0jmtmbR0kLLc2JR7BptQfYEa7I8aNIfFcsRntDtpjYX1aSq5PW+wZI6xkdFhe+LJOhy7Pn47ZchsZe6NSV6v+irRsnD4kbcZHJzZlFCUpbWiSta1nlW5qbIAl+73Zaz5wqmDJ+8AEAQHr8gbjt+WnSGv7yx7I/Th4hiTiwNIZQ5UXK8APQk5Sd2tVBLpLNbiG1Ty1SP948R5L5QllcZPdvo+fqrm0jcVuuk4tZTMszFM6xJpnmzVCUdZw7RUaN6Rlxax3vVg4ZG8S1eLl8Zo1DH7jhu3t4eHh4vGXwkaIeHh4eWwS3PpdLTOiofB/xX2mrs9/owiSpaZUpIUXDJhEYXQNCkg3vJ1InO3ZP3NbI0nGXm6Kl0tY22VdaV2m3LZfDQlTv0NVXdCGubbUX6fcxmRe1fHA33X95VkWJvU4qYaNGZoGZM2fiY1076XMyI/6pNnS+zGtHiiaV37qrtdkWdOj+odK5jnYTOTfOkYWtBcmFs/0g+Xjnx0T1vjhDfZtcFg68kSS1c2c/nTeQU6Yfjv4tKjX0ueeeAwD85RlR34+X6byHH6J7furAeHxs7Jf+PgBgce4/x22ll4kEn7skBNs2jlR9ZIzyeBw7/+P42CRH6SaV6h0Ea2/9kIsq2Iao2RGvd6Mp3ytVyRwwz2TahXnZO3OLZM+oVKVtpkkq+PmLQrDtHiKTxY6dpG6/804p3sDF5fFmQ8yLDfZtbltb95zE41ut9udKErWh9vV0mW52iX3U9ypzQn6QiMdJnd/FUj+yaYnyvBI/+do/iz/Pcs6jpVDMClFEz2NPINfYPU4E+RAXgLj7XZL6Nrj3nQCAb03KQ/elpyhS+41XZe+Gtof76HLsiOkxm6AxD6hu799N/9j1iBDBPz1FJs+XXiVz6MWi+LJnOSq0pyDmsVxI89GVlHmeKZI5aG6G/raqyo+f16NVl367nFQ3Ai+he3h4eGwR3AYSOsEqIscVs9Al6CosZS1NEQEaLUt+kGyKfrE7R8T9r7Cd3NiijMoT4chFlszLFXGJujRNROXywnE5v0bSbEoRlCkuB+Yqw4dK4o0jElXZrHSCPndvE1fG5XMk8TRmaQxVFfVauXyGrtUv7paGc8rYdX5/S3VhuJqOuG0jx1hqT0p/d/QRCTRWJemprKSt5L13UV+XRBp/4snfAwAcVnk+mnlys3z3O38FAPCJ94t0PWhofr/23W/Fbd/+CblqRpGQXZkGzdtPX/0yAODSRz4SH/u1X6ACG4P3iPRUO0VuaY0ZGfPSSZKC+u8l97juPtHWWsucyVBVnM+21tZ2JiZIe6ioggRN3jNZVQ6uh3PwLCXo78KyzG2J8/noKvcLfM83VTm93k5yfevgMnJ3DIpGVDmwi65Vlr1+7gzt/8ayaA8OTrtMKsLX3b2pgoedBmfU/qhxP4tFjn5VVe57h4m4SymJtML5YBq1tYsyfOrj8jxW89SBWkE05uNHab8tz8p1P/ARipq+8ENyXQ3fIxL64dM0zz9+WsjWI4fo2TFW9l3EOZtyrLDkQtknI/30LA33S8bLvmGah3v3yp5893toXz/9NEn733/qWRnYFM1RRmUnTUU0D1OzYjk4zxGwzSbtmU7lb5F0ZSWVZeJyc0PpsNrgJXQPDw+PLQL/Qvfw8PDYIrjlJhfnJ2uVH7UrXtFUEXI1VpvrXAfUNEXlTHWR6pPs2xa3RWnyR16cValbOdFTvUVqWqMu1z89SQTbhWMvxm0JNsm0mS4cKcokpFnlWDYh5NtgP5k19qgEXJkeIsJq86TiRTUhXCoLRJgV6qLuhzkXWbj2729kV5LKOv1rXKQgrVN+EiFjWIVMDMj8pcdJNT11WPx77zlAZo+eRSkw8NIrZwAAP33xrwEAew9KSMLbuKz7y0del350UUK0/+WXPxy39VVoXH/1vS8BAL78w6/Fxz71KEWqvv2AFB+YHWKf7TmJDoxKNJYaF87o7VH1UZlEqygmMVon7Hawg/ozqaIgi2wWK6nkWQ2uaVpO0zqWakJkN5r0XZ1grsXrMV2We794kgjjLPtFv1PVPb1viCJRG6oe6A/4mbhwRqKiGxzRmudCKSPKn7rOJrbZskoqxvU0dVGUFpthFnnPzy4Iid/bTyaDXFZMSpUFGldpae2Ur2++JOa6c1U6z4zIHKUMmRX7FPlsX6EiKv0cTRsmpZOvHidC/ayKEg+tKzIi+zrkIivdbB07uF0ic/eMc+zFLqm7unMXmXL2iFUUXMMCn3yMGvdlJCHda89SArjS2cNx2yXu0xIkte/QTnpO9g/SvdLK6aB4gd5jS2pdbpwS9RK6h4eHx5bBLZfQYwlGsTahI/UUb9VcJonVOoLIiKSUzNMvYKCi1pabnJZ0WbkFlegepyfOcINIBmX+pWwuK7GlTsd1CpogTqnrigooqY9JL6ukv0aS+puGSNy5HiLsFpMkrdiakKINLgZha6ogRuQiHddxtVP9SHLVeu3bZrkgQaDynyxbkrgWmyQVZoYk90bQRXPZtV9Kar3/LiKKsimJbjuUpgjYX3+WSowdW5ZxHghp/qYuSZX2HQ9RPNp994vUOcSE0uwF0hCe/t6x+NjiNF0js19Ir5695No3f0IiRasVLi5SIhJrqFcIq/FuIt9OzIs0FKxTmOHvPkrE3V/Oyrq89BJJYC2VVjaZIWmvGdFeayji0WmZWkuKeF83VF6VS0u0V15gSb0rL+l2D95FIuZd20SaXKhyTpRlISNnpij60tG127tlfQa3UcGWsyrS8dUTRGpXFmV8jnBf5jS7C2W5frXOeUpCkf9aLPkvr5PL5dAJuYblIha5itwzSNGaLSot93BE8zBwB0nvGVX0obubJrhQkHXMT9OcDmYlJ8o4E5/33E175oG3idYzMETPQSor5HaaNY+serycLpLkxvvvEzfOvgzN77FXRBM6e576mQ5lzI+9l/bpUJrWp3FJ5mq2QN9dVo95/wCP4Ysi+V8vvITu4eHhsUXgX+geHh4eWwS33OTirBntlRTZdKFI0UaVI+QaROgklBkkmSFSqpEUP9IyV5NpNkRFjgJSvcKIo7SUumgd2WVVxiKsVJvdb6BTn40KFV1NiU+yn3oyJSpemKPPNsH+5VX5Zr1OamXUVJVrnAXHXJGESfdKkaIu3W9Cn89jz+WFIIpY3Su0SP3LjEiUoumgttEOUSsN96k1KSRusUZ9DznxVUHPlSO3I5EbUpyGNqnU92SWPqf6aP1SkawLFzhClJcIw/ROMju0MuKPnOK4BNsgIi6dFzUbDbqIqvaIWl2vczu2j1IMw6cfuz9u6+4k887rL0mStQrHKUTLZN5pRTJ2y2NoI6bjLSttLpD03Dz18aeHxcc/ZKL0jrvuitse4rqvS6rizquupiknf+pUmZfHh2n90lbMNtPLtH7nq1IPN+L5qPMYimXl48+pfZFTFZzStHcTWNvkcmZGzA/9HKHZVxUnhVSGI4lT8txWknTdsR4iw00kJsKZKYoPKC4okws/X/d0C2H7P97Lpo53014fGJDnoGWpTw1FQbpvrv10AR01uX6qQusy15BvXAxonvdvl3TTu8Z30Xd5ruoFmT+355cX5Vnq7Vo76vZa4SV0Dw8Pjy2CWy6ht1ymXOWzY1cpcCGpY12b+oKr96iirs5PkfufdkOMyu7XkP4OdAuRYjmVrlU1ElsxzSS/rAn+HKqMMw4NFsGsitQzLGXZQEvLLseE+z3VCWHc35X5OOw6uVxakXa6WpZIAAAgAElEQVT75Kr16uc64OT62ZRI3CkQUZZgSSObFWkovrf6XOaUtMdO/CBu+6s3vgsA2HeA8mwcGJZqhOnLlHcnUHJDxFJ7W2Zkd4zd7kK1GSLOHxKlJKVusoOkTZOQtarVWOsqkmRpukTqC8Mr1wzr+oh99+hJAMDj6p7vv49IumpVJLAJ1lRmp9l1bkEIYdHc9AyukhaaF8kJ3Kfm5Br5o2cAAB0FkdzGdpP28OBuIemqVerH1CmW1FU+EcP7OdHSNVZ5X+siH1ek2a2rCNdSlaTatNrXrrxoZ1YXYmnHzn2iWTQukXS9XBaJdIk/LmRkrRKctnm+TIRmuiJ7cvIijaW4IOvex+TiHfvkWX7wESKC57LU35cPnYmPVas0v4mEjK+rm8aw725xCuDMyJg6T/tv+mVxwTx8hEjOV6bEdXSO027f1y2+j+kCRcqmc6R1JwMZe5imfZpXDhHp9Mrn73rhJXQPDw+PLYJrKXAxBuBPAAyD5JonrLW/b4zpBfBVALsAnAHwKWvtdScjaLJIELbZojnnihIxnQTtpApd9TxyFc1VoFCzRUNrtMSWmuecL05iLC2LpJTmfCk7OQcMAAQt54cm5yUS3CdnQ1daQY0/m4b86hb6SLoyCXFHa3GpqcjVxlJCnCukgNWyAUZr2yubSuqrx26fcuE029MTyvUxYt4gikhCSaWkj6siTWvw7JkjcdNrRdKEBhc44EvlAMnwmqVVYQnHWzSUS6ULuDF8nlERLy1eg0hNUsT5Q3RsUMRb2bIrZqQsogm2YbaUhLRetsXyeXKnQ4fMR/oBKqqQG5Sgqkyd1jEzR0E4qVAFyLj9oZUqF5SmVSc4yZiO6aITR6bI5Tb9umRbTPL+2LNTSh8advE7wnbqfCAXcdpivSY+la046Gml9uC0QV2yrsS5fppKrWlywRlVQ2UF7rtPOIhjrDVMnL0Qt81yRZC6Cizq7qC+nblIknRnv9LWWGwOrKxtL6dNHH+7rEvEHrEvfZ/25F/86KX4WBjRHhhOy/h2jJBk3LdTnv3zHGD1zA9pfx/+meR4mr5MvFzZis9hodutqWhTRXZJrRRpHVOR7L80u0Pm+sTFtBxplmdjuBYJvQng16y1dwJ4BMA/NMYcBPAFAE9Za/cBeIr/7eHh4eFxi3DVF7q1dtJa+xJ/XgJwGMB2AB8H8CSf9iSAT/y8Ounh4eHhcXVcFylqjNkF4AEAzwEYstZOAvTSN8YMrvPVda65mmrKpKEibZJsEkHSqcFKjefos85I3JkGuijqcCovKlBlnkiMMVe7LyekV4VZqaayajStU01FhW1x2tcKhwUm60rtypB5J6XuGeZIpWopNbG+RCqYbTABpl342D0vyIr6FedhWdUxkqCc9BCy6aeNQuW5DHWaYia+Ih501FrbpAMAOe7bJ37xf4rbOqdpHr58kgjQwxclB8jufhpDqEJ+I07i39SkKOv5SSY5dR9rPM/NmqjlLY5Gbe8vzZFLa7xclxsUOfVySrlxJoK1ZZnjl2gM30lJzpB+rtLe1SdkZMckEX1JNi0FqkatjG0V9rcN7YVSXL1PACiy19/RSXG9LeQo3e671R7bN0gk4MBdRCQuV2VPtgz1qVESdb/FJkqjI4mdySVwbrnSw0qNnquEMuU4ojmZ1DuvHSeOSa3cMhOxyz3iPjlVofxJ5bIU/EhFRHIWesk0k85JRHE2S6R8Ni1kZC+ngN55QNxaXbGaZ06QqeXNWakv21qgY+NJMaflOd314dNiKv36c0R8vvAiRW2Wiiq3Es9NQZHPXYbWozgvc/TCj8nVtbFE/RgoyDXGxmjeAuXKePysuJFuFNf8QjfGFAD8FwC/aq1dNOuETl/xvc8D+PzGuufh4eHhca24phe6MSYJepl/yVr7dW6eMsaMsHQ+AmB6te9aa58A8ARfZ4WM4oJgVhNeAiWRprkAgEm7Yg9K4mUJPV2VvA+jO+i8yj5JqF+fo1/xA4Ocp2SbFJGwKbp+S5GLLtujVeLK0jxJioc501ptWjIJ7hgi6WNkh1QlDzl3SnVRfrkrCzRVpkmSVJBRkiPno5Gyc4CNnPSENZFQbpEJp+Go6XZFQ7SrmssUGXEenXpVScGur+oeaZ7z4e13xm2PP/pBAMAfv/ZHAIDT08KL1wZJekqlpB+1JbpHVBOyK8hwCbwq9aOqCW+XM0fliClfJskuqotGhoAkwEyW1vhSTfqxzOc1IwnuMuvkxQl6SAo/XxeXvOf+8nkAQKMpuYFGClSMor9AASyTBbm+nWGtqqn9cXksarM77SV0WtoqXo7zqobEoQmSZjtzcq+HOFhrdIS0iCpEWr3EGSGb01Kuz5Giuuyj2xZJJv31o2o5oCxS6mueNebeHtFyr8TECXk2lgJ6NopG5j2RpAHmsiqDZY2Kl1ye/j4A4OCd8oy+/e30LF1cEE0om6J1Vp6PCNj9dWyU9l9CFAUUa9R2oSlujnOHaFxfe/WZuG2WNUNXoMRY0UTSPDfdysW5i5+hl5+TMYNLBw50krS/rVcWsu40EeVe+9yP1Hc3iKva0A2J4n8I4LC19l+rQ98E8Fn+/FkA37jh3nh4eHh4bBjXIqG/C8DfA3DIGOPS2/2fAP4FgD81xnwOwDkAn1zj+x4eHh4eNwFXfaFba3+C1dOUAMAHbrgHTAJFysfVRfSFSu3LcFrRTBept5U5qRpfKRNpVLpwLm7bPkJRXw/sF9/SRkS+u5kk+2Sr+pAmrjequoaVKXI7OmnKClyzslkVf+Ac+2lns0Kc1bki/NTpl+O22jyRHwGnjc0WJHqzo5eiywJVl9QFgQbr5M1oqLlypplAp1WJuG5oQ6UTdk7E7OtdnRVyqlGn8R1eEIKtq0XEz3Bets3ULJlCUqzzZjKiDhsuFNEvPBimL5Fa+dpPX5DzdpDafvxlys0SdYjJIM91LKsXJuO2pdOU78RUVTrcJN0kmaHvLiyKBbDEZo9KU85P2FUZSgDAJa4F2ZtSJh2+V7Uoc1QZpLHmOdags0PGHrI6Hql7mlVyA4W8SL383ZEhMWF05IlU1i7zhvdAU+U/mWHSt4v98zM5OeYsHE0VfdtyphY1B24+0mwGSRjlYN7iHD6qyfDzatcpFPLBdwqhWcqSOeicMuudnCCCd/6ykL69/HxNT1G0brMpROUbr9PeOX9G8t3c/yCZKLXJxZlJXnqByNOlBTFH1jg+Zaql1oXNKyoVT2xmDd041bOXZB/8fEtiLjoaNJZk/qSMuU57dqk2xf+WG5Q5LiBdlXfQSM962WSuDT5S1MPDw2OL4JbncnEZBHXEpeVfxUDljkgXSFrpHCHXrOrU6fhYvUhk6PxFcWfKnSJXocEOKXqRLJB7lxN5IiUp2VXzbLi/usAF/bJ2sFQdqDwbzq2wXpXz5y6SJjF/Skq5NZdJesxw5GrnsFRHz/Ry1feUypHB94+itaXKlooibbE0ZvWcsqSzVL4s5+U4qpIj3qoXVPbCRZJ4F370XNz216c4wjUrBNHEGSpGkWO3vrt3inbiyu/9D4+9LW77+lfoel/98z+J2/64ySRumqT9e+68Nz52bw/NQ+UNiZZcYGKwoXwf870kmRuet+UlkcAyTObWdZm+aO1si8M8hkBl46xe5hJqKZHC6y2OAGxQRGJe5cLJ5akfpYq6zyoZGCMWC6MG9XeHKrzwtjsoa+DoqGTIDLjcXaC0RudCmHKEphqLK7rSVAVkmkxu6ojcAkvm+Yx7JYhm1mTXXKtKK1qOwK7X1p7HMCfX6O2me3UXRAMZG6a26QnpR71Cc9rVw1lKAzk2NsYk9EkhvF20a6CUKSR4BpZpPUxz5XOue+20De2Z4UhhySsl8+cUoAPbxbX4fXfSGjUy8l565jDti34uCXhwrzznI1xGsVQR7STsv/HXsZfQPTw8PLYI/Avdw8PDY4vglptc4kjRttqL7HetfM1DVgm7hig9ZXFIkvFUSqSCl0viq3zpJCWQSndKJfvuPaQmRuwbHqnIwfVS0+okRoFz517FRNOq08H5CfH5nTpCpp/K9AkZC6etTXeTWaNzVNJ2mhypbi0rqr27hVknutEoJ/WG851VJhfDNVgdgQwApkD3b4U0b82zb8bHaqceAQA8dLfUFP3OT34bAPDiRfGn7Rq5DwDw/vf8MgDgbbvFbzibpvl9x6OfjtsqixRQ/PVnhRRNMQE8vudRAMAvPPhgfGywSsTSyVdflb7Nl7nfal1YRZ+sUpTnVFHVy2RSVKd/jdYpFnLgAJk6fmm7pEKtca3Zn74hdUyLJTJf9TJx2xWIb/PkIu21kyWZq6jMpgu9Z9y1KuzHfFrI33KDzrtnWcbS308mi4Iq4JFlRrDJdT5tIGabRpnvoEwjlotZqABlFLjMfSbF0cMQ8nK5TmaQlvpCaZau0by0dj6+mkpI183xI/mssJd9aTJF7EjLPDc4FgE5MqEVp4SE7uEYjYFtYkZ1yfLsvMxRdYqiJ7J1l8xLXnPWmSN1au5VUmEjjo/hRHcJmb9OtrLuHpRn9KF91KfGuMS99O6kMef4ORjqExNNOk/9nlyS5FzZuNCNJL+7XngJ3cPDw2OL4JZL6I4A1ZkEjHUuhPJ7E4QsZXXTr1zfHkmePznPJNllkYIXmcQ6++rTcZtLIdq/j9J6GkWYWkfOtiX9dzlUhJhxrmdNly9FVUefmyB3xAtv/ixuW75AUm9YF8k4wzXC+sbJ5TE/ckDuybkxtMuhuE+u/fvblk44WkmKxiXqVE6PYIAkpFaWxhDMiXTYeJ0iYbs+INLyP/21fwYAmJpR1yiQBrR9GxFWHXmRWuLyHQUhgx79Wx8DABx4z/uk7zznmQSJPmkllU0+RcU0Fk/K2rY4+tHkZf1qHHH32iIR4ydVZKlz00srqTxcR0KffYkkpJdeksi9ChcwmCyLJFjmbNHVGkmwUa+Qoru2kSZSVDlAZiY54rIuBJvT9Bq8fpMlOVY8Ruvx5lkhsjNMyqYUOZtmKTWRYIlUueNWWcstVmWfuvTNXRl5/Hs66HM+wwVFVD6YBuccyqj0yk12g21GEp19JYrTilQu0Xk2EO21kKd91N8tUnueC1zMVWgsJ147HB+rBKSVdytpORvS53OnJO/OyWfJ6aC4VOM+ypyKcqSel1Wi1S2TsXnW6jqVC+toD7WNDMs8F3rpuW3kxAX5zlF6NhKukIxyBXVkdW+n7OF9B9z++S42Ci+he3h4eGwR+Be6h4eHxxbBLTe5OB1IE0Vx2ty2QqP0J8XRmD0jQr41DpCf83RTiJz6Aqne8yr16NICJfy5dJoItuH9UlGlc4jIv1ReSIrf+e3/dQMDAh5RhG2CU/pmVOKmbfspuVX/vocBAMlu8d2OmHgyVhOaLpp2bVhlswri6jMrA3xNWdTg2RL16WInEbFdc0LGTL7yNwCAof3jcdvgAzRfA9u1fcz1ceW97JUnAchl2/+uClVa8cXfo1S9ZZUC1SZpjfp3SCTifJPMApcvkh+wqSk/dK4M31IJzKLEylS3DsECmVKmO6WTYYZmv9Cp/NCrZCpYciadlhCE+wYo5qFZEsLvZ2UyDyxydSfqiFP3aY5aSu9fYnJ7cVnMJVPP/7s1+70eRu//R/Hn7gztp8EeGV+OTS0J9j9vRipdLJubQk2yhyvNolfCXJD5OLVEppbLDWkrDNBgt49K5u1EiswSM0V6NU1MyzMdWrpG1ohZo9BBe/fZN4Rk/+7rZHKZrtDcV61ea+rv0f/6d9bs99XwB7/7Rbr3iIz9ZIPeM/XnxdyaWiZTWV8XPWfOSYD/AQDIdEsY9Xjn0Ib75OAldA8PD48tglsuoTvZTZc3dHldgjaagqUE/glKZVVdwTGWIpVUe/k4J5e/LGSJ5Yrj82co58vSpEhKYQflWklmJfITv319Y3FIQiSqTBeRJSN7hcQdPPAOAEB6YCcAoJUQUkiIz5V5VNd2rJToUA19BVezNVDV3C+zS938bnK3y8/InE5yeuDZb/zXuO2eFEkTHXvFFRTd4cqbvYUoTpCUk0iIm17nKGk05YxoGy+epjWdYZdGXevSDbmi3U+DtfWd7x6miNmkEqhyId2rQ6kWWf6cytDfaEGI265ekizv6tsZt9XuIInx8Am59+IcS6zsWmnb1tGpPzee46M3L3tsqIce+1RStJh6jSTMVpPIS503qMZqQ0UR6tbS+BqttSNF33eXaKo/PEr7qVFVBTy4CMmhk0KsWi6EESZJap+Zl9xDWKCo6+1qL9S6aO8eT4uke4GdHSoRjSkBGXugXDo3ioNDtLkWGlIf9YfPkGTefVEiwt89QK6XrWXOj9OpIlbZEWGxKNHtc0bI743CS+geHh4eWwS3XEKPTedtgUWcu0TXw+CfHpf7QhdqyHaRVL1tn9hUC1306zhxSOxttWmyETfZzczWRJJuVOmXUhd02Ci6hsUmOLTnIACgZ7cUvUj0kf2/xe5l7TllnKskVBsHN6ysDyLnKMk7Lsihc78kXJtIXpe40EahQW6Fe3ZKH1GhgKjWUamY/uYfkl115EEJnijsJ9fLNM99pNLeWc5K1ympSK4bBmT/7BwTW77hLIQvTEp2zR/NkI29USWJMaOCYFIslenpMOvkxbnE10qoQKQkr1EQiG05wblNHMdhFMuRzhFPMzi8J267exdxPSP3iuT6/GmSNi+zm22zLNc3liRoG61d5u1a0ZmUzIB1DlQqN5VrZ4N2fsD3NCqHSpPTLGq32SAe+zo3vXs0/riji+5ZmZAShbUpWqvirMzbzDwHuS3QM9qYEyl4sI/tztvFDTYqcJCZSgU50E3vg7FhegfUL4gdvrKok75sDLNLlFfoDZWf6eIijWt0TNY2u5P2rJu/Ul20DesKpeRkAveNK813g/ASuoeHh8cWgX+he3h4eGwRXNXkYozJAPgRgDSf/2fW2t8yxowD+AqAXgAvAfh71trr1mfcL4pVRob40yoF001sflB95IskOiSSLd1B+VFy/eISuDBBpo7ieUqQX5uWIgitCqmkreaNG132vPeXpR99pIIFGSFtWsEV095uC+CmlWl8zTrMY6BMUO5y7bQqNepotUqN1Pxzk0TMvTkoLnbD24jMK5w7Hrctnqa6mssXpEhj0EWuVmE/jdPkFKnMSUof+501u31VdO6kNVvKS9rVFy+R+9rLF6XISZkJ7zS7JoYJnQeIC5ro3EDr1BRtNjhPiUq7WneksprUuA6oa1RrFi3TOs4VJSVxeZbMeoMH74vbHt3Prqu7ab5PTZ6Jjy0xUXlBRVxuFMvzEvXqUgfrfCaResIASckLAIGrUZtQ8h9bSdbLL/Q7T/63+HOJC440dDZhQ6azekOISmdx2uGel0BI6PIsrfHrJTHDLKTouosdYlodupdMPY/uIDPPjl3iijx1WiJgN4rOPnrNvUOZV9Kd9L4ZH5bnPN2kvpfP0/Nl51R+oQqZeyNVaCNVFxPYRnEtEnoNwOPW2vsA3A/gQ8aYRwD8LoB/Y63dB2AewOduuDceHh4eHhvGtZSgswDcT0eS/7MAHgfwP3P7kwD+LwB/cL0dcEUsWkpKdRkYI+VmZljycu5UUZt3FwfeaGmBpadCn/w6FzofAgAMjJOEVC5KkEOlSFJfvapzU/zx9Q4HAJDZJi6KscuZYo/ioCFu0gK6uK2p+WDJzwRru68FbaSyq1SuuuEuq/vBEnSNJZ7XQ9FOGix5798tQRnls0QCRRWV26ZCc9i6yJkEjd5SNy5ZVkeIUT01Iy5dh+ZJMp9cFJLJBVOFPEe2peaK5yGXVFqMWbtvkXMTtbrNlSRTl41LubkgG0VMO2K/JhrRxBztrcuvSebIwR7KW7N7iIj0vUPCILeSFGF1cK/s4Y2iVJLALLfhWirHScu6NusGEB9zY9EEaCzdr1PK7+VX5J6cLBW5tEjjyRTNW60pYvsSk5ZLvFZ9Kiio4cpV1lXpPCbNh1OSyfBgN5Gge0ZoX+/eppwUtqtadRtEokJl5lJ5GUudczoZ5VbRsZ0C8S5N8HtGaeaFTlpbm1AZYhdVwNkGcU02dGNMyAWipwF8D8BJAAvWuTEAEwC2r/HdzxtjXjTGvHjDvfXw8PDwWBPX9EK31rastfcDGAXwMIA7Vzttje8+Ya19yFr70Ma76eHh4eFxNVyXH7q1dsEY8zSARwB0G2MSLKWPAri47pfXvigAILBaBWYVT9F6llPZ2rgKt/ZRN+1/IblFAlX4AZxkP5Wga6QKQqL2bCMTg2lTITdmcmkaUcUMRyQGtp2iBMQ0on9XhRBus8PQn3X80FsNFRq5ijbsPmvyOeQ+JTnaL0yJQaHRT+TOjMovYfZxbgxVJ7PB9SlLdVc5Xfuhu/O+uma/r4aTXUQ8VZWP97YiqfIzs2JyWeL7Z1bJY+O2RVZdo7ZOhKMcWbmfrCILE4G7F5sCVF4TZ1ZLpWQ+ckwYp5Oy7+oNUtVPzxC5lywJcVbIkB91TkcvbxC2rQAKjbDVkmfOpVyOnD+3NrnEz6PAmUXXc0RPqOunEhydql457nOb+cv1jU0XHcrRYfc2cnCYrYtf+cwy7YHOLjG57GFza5bHnOkXQn2kS4qQbBT9XdTfzl1CgM7PEIE9MyN9G9xJfZph//OlZdmvaZ62lnqPjebWzi90rbiqhG6MGTDGdPPnLIAPAjgM4AcA/jaf9lkA37jh3nh4eHh4bBjXIqGPAHjSGBOCfgD+1Fr7LWPMmwC+Yoz5vwG8DOAPN9IBRyRp6UZqrunox/ZoNS2tWpbulfAUk2S6yIMraedc/NpIHuui/aQf/8fvfpX7JhJE6CQ197ct94aLnltFNNa5Q2JpeWVmxSj2OVTZJ/kL61GMQZs2466lC1ywNKnmOb4tl4DrH98bH7vjwbsBAPtHJXqtI0+SYkolOXERevNFcvtMpCVVYpaz+p2f/GTcVq5x5sOkin50rpos0TWbouG8430ssZXE/e8ZnokTZxWpzS5fLZ7TmnYhbLk8KarQgVlHlnGRn4pkd3smUFpgImxv0/pTyP/oL4h0PTJCGk5Pv2g9mQJJj05671Bun515csXLZERK/Vf//D8AAJ569vtxW82SVF/ovhcA8OZhoatsmUjXZEoReA1eK519ksfXcrtspdcsjBp7PB/ruH/2JJVEyqSl3jsha8r6unUWXTszdN42jvYEgJ27iDDurch1u+Zpf+RVFsxB8D61e7j/ErGa7af9fOxZKSLx0p8/CQDoqAnx/vBu/g4XgZmak/KM+X005t4RkfzDFF33jNSIQcsQmV1LkNQ+H4mLomnRc5JKisaQ7r5x7eFavFxeA/DAKu2nQPZ0Dw8PD4/bAD5S1MPDw2OL4JYn52rGZKGYB1JxBllRxRpx5n9XEEOZE4xLt6vMCas43cSEoPMR1r7e7l5mpf9yoHyrY5NI4L63/m+ii9DUfvaBq1XqSDVlTLH8Wav7jhyO1rmXNhUhcgSyauJ7QldAZx/eVopMLt07JQFW3wEyueR7xARQ4Clq9+Slu3Rzov6WMv04crHQLddYbtD4LipiNR3S/dMBtZUqYhrp6iBTQWlSTDlhhsw1Opox5DVtOvNKoExy3BaEsraJdZJKJZM0Lwm1Bi4RV2dGIhd7CvQ5k6MZ0bU8GzW6Z6IhCeCG8nT+2IiYsbqGdgEAUlleg5yQe84MU03K2M+fIh9oo3ya8z1kwlkosdmpKiYJV4PUORXQP2gNAjVHESdtC+IkZGpueZ4DZS5JJWnMicTa6Wh3qiImhos7aFNYg82oKbV3u9m3u7+D1nhsVGpuBqBxZUMhjrf3c/GIDtmVfR1kCunq3kV9TAp5CVCngryYcmpddP6Fk5JqOzFL5rz6LJlhbEbu2bdAJpTKRamPWs2QuSvsk+jR5SbNfaGPzDaREdNZR4YcBYd6d8VtO4ZvPHGYl9A9PDw8tgiMXSfS6y2/mVnH787Dw8PDYy387FpiebyE7uHh4bFF4F/oHh4eHlsE/oXu4eHhsUXgX+geHh4eWwQ3221xBsAy/93M6MfmHsNm7z+w+cew2fsPbP4xbKb+77yWk26qlwsAGGNe3OyZFzf7GDZ7/4HNP4bN3n9g849hs/d/NXiTi4eHh8cWgX+he3h4eGwR3IoX+hO34J5vNTb7GDZ7/4HNP4bN3n9g849hs/d/BW66Dd3Dw8PD4+cDb3Lx8PDw2CK4qS90Y8yHjDFHjTEnjDFfuJn33giMMWPGmB8YYw4bY94wxvxjbu81xnzPGHOc//Zc7Vq3Elzk+2VjzLf43+PGmOe4/181xqydMu82gDGm2xjzZ8aYI7wW79yEa/C/8x563RjzZWNM5nZeB2PMHxljpo0xr6u2VefcEP5ffq5fM8Y8eOt6LlhjDL/H++g1Y8yfu2psfOw3eAxHjTG/dGt6fWO4aS90rnj07wF8GMBBAJ8xxhy8WfffIJoAfs1aeyeojuo/5D5/AcBT1tp9AJ7if9/O+MegsoEOvwvg33D/5wF87pb06trx+wD+2lp7B4D7QGPZNGtgjNkO4H8D8JC19m5QaatP4/Zehy8C+NAVbWvN+YcB7OP/Pg/gD25SH6+GL2LlGL4H4G5r7b0AjgH4DQDg5/rTAO7i7/wHfmdtKtxMCf1hACestaestXUAXwHw8Zt4/+uGtXbSWvsSf14CvUi2g/r9JJ/2JIBP3JoeXh3GmFEAfwvAf+R/GwCPA/gzPuV2738ngPeASxxaa+vW2gVsojVgJABkjTEJADkAk7iN18Fa+yMAc1c0rzXnHwfwJ5bwLKiA/MjN6enaWG0M1trvWqlF+CwQ16f7OICvWGtr1trTAE5gE1Zku5kv9O0Azqt/T3DbpoAxZheoFN9zAIastZMAvfQBDN66nl0V/xbAP4VUEOkDsKA29e2+DrsBXAbwx2w2+o/GmDw20RpYay8A+JcAzoFe5EUAP8PmWgdg7TnfrM/2P1zephgAAAJdSURBVADwbf68WcfQhpv5Ql+tRsymcLExxhQA/BcAv2qtXbzV/blWGGM+CmDaWvsz3bzKqbfzOiQAPAjgD6y1D4BSR9y25pXVwLbmjwMYB7ANQB5kprgSt/M6rIfNtqdgjPlNkEn1S65pldNu6zGshpv5Qp8AMKb+PQrg4k28/4ZgjEmCXuZfstZ+nZunnErJf6dvVf+ugncB+Jgx5gzIxPU4SGLvZtUfuP3XYQLAhLX2Of73n4Fe8JtlDQDggwBOW2svW2sbAL4O4FFsrnUA1p7zTfVsG2M+C+CjAH7Fit/2phrDWriZL/QXAOxjZj8FIiC+eRPvf91ge/MfAjhsrf3X6tA3AXyWP38WwDdudt+uBdba37DWjlprd4Hm+/vW2l8B8AMAf5tPu237DwDW2ksAzhtjDnDTBwC8iU2yBoxzAB4xxuR4T7kxbJp1YKw1598E8PfZ2+URAEVnmrndYIz5EIBfB/Axa21ZHfomgE8bY9LGmHEQwfv8rejjDcFae9P+A/ARELN8EsBv3sx7b7C/j4HUrtcAvML/fQRkh34KwHH+23ur+3oNY3kfgG/x592gzXoCwNcApG91/67S9/sBvMjr8BcAejbbGgD45wCOAHgdwH8C1dq+bdcBwJdB9v4GSHr93FpzDjJX/Ht+rg+BvHlu1zGcANnK3fP8/6nzf5PHcBTAh291/zfyn48U9fDw8Ngi8JGiHh4eHlsE/oXu4eHhsUXgX+geHh4eWwT+he7h4eGxReBf6B4eHh5bBP6F7uHh4bFF4F/oHh4eHlsE/oXu4eHhsUXw/wMf5DGulg5aQgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor(1., dtype=torch.float64)\n"
     ]
    }
   ],
   "source": [
    "dataiter = iter(testloader)\n",
    "images, labels = dataiter.next()\n",
    "imgshow_imgs(images)\n",
    "print(images.max())\n",
    "images = poison(images)\n",
    "imgshow_imgs(images)\n",
    "print(images.max())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# GAN start here"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "# This section will define the fucntion to apply GAN fix to the whole dataset\n",
    "\n",
    "from models import CompletionNetwork\n",
    "from utils import poisson_blend_old, poisson_blend_old1, gen_input_mask\n",
    "import torchvision.transforms as transforms\n",
    "from torchvision.utils import save_image\n",
    "\n",
    "\n",
    "# This section define the patching function\n",
    "def GAN_patching_inputs(images, predicted, i, labels, bsize): #both are tensor gpu\n",
    "    # This section define the patching function\n",
    "    # def GAN_patching_inputs(torch_image):\n",
    "    model = CompletionNetwork()\n",
    "    model.load_state_dict(torch.load(\"model_cn_step21452\", map_location='cpu'))\n",
    "    model.eval()\n",
    "    model = model.to(device)\n",
    "    batch_size = bsize\n",
    "    cleanimgs = list(range(batch_size)) # GAN inpainted\n",
    "    cleanimgs1 = list(range(batch_size)) # GAN inpainted 1\n",
    "    clean_m_imgs = list(range(batch_size)) # patch\n",
    "    cleanouts = list(range(batch_size)) # GAN pure output\n",
    "    clean_red_imgs = list(range(batch_size)) # red patch output\n",
    "    \n",
    "    # This is to apply Grad CAM to the load images\n",
    "    # --------------------------------------------\n",
    "    probs, ids = gcam.forward(images)\n",
    "    gcam.backward(ids=ids[:, [0]]) # 0 here is the top 1 classification result\n",
    "    regions = gcam.generate(target_layer=target_layer)\n",
    "    \n",
    "    for j in range(len(images)):\n",
    "\n",
    "        image = images[j]\n",
    "        image = torch.unsqueeze(image, 0) # unsqueeze meaning adding 1D to the tensor\n",
    "        \n",
    "        \n",
    "        # this should work\n",
    "#         heatmap = make_heatmap(image.cpu(),predicted.cpu().numpy()[j], 10, 3) # create the heatmap for the loaded images\n",
    "        \n",
    "#         heatmap_resize = heatmap_upsize(heatmap) # this is an array\n",
    "        ###\n",
    "        \n",
    "        # This is to apply Grad CAM into our work\n",
    "        # ---------------------------------------\n",
    "        # Grad-CAM mask [0 1] only\n",
    "        mask = regions[j].squeeze().cpu().numpy() # removing 1D from the tensor regions [1,32,32]\n",
    "        cond_mask = mask >= 0.5\n",
    "        mask = cond_mask.astype(int)\n",
    "        \n",
    "        # ---------------------------------------\n",
    "    \n",
    "        #tmp use this\n",
    "#         heatmap = make_heatmap(image.cpu(),predicted.cpu().numpy()[j], 8, 4)\n",
    "#         heatmap_resize = imresize(heatmap, (32,32)) # this is an array\n",
    "\n",
    "#         mask = heatmap_resize\n",
    "\n",
    "# #         cond_mask = mask < 240 # working fine now, need to find another value\n",
    "#         cond_mask = mask < 250\n",
    "#         mask = cond_mask.astype(int) # convert mask to value of zeros and 1 only\n",
    "        mask = np.expand_dims(mask,axis=0) # add 1D to mask \n",
    "        mask = np.expand_dims(mask,axis=0)\n",
    "        mask = torch.tensor(mask) # convert mask to tensor 1,1,32,32\n",
    "        mask = mask.type(torch.FloatTensor)\n",
    "        mask = mask.to(device)\n",
    "        x = image # original test image\n",
    "        # unnormalize to put into GAN\n",
    "#         print(x.shape)\n",
    "#         x = np.squeeze(x)\n",
    "#         x = unnormalize_tensor_batch(x, mean, std) #  unnormalize for GAN reconstruction\n",
    "\n",
    "#         x = unnomarlize_cifar(x) # convert from [-1 1] to [0 1]\n",
    "    \n",
    "    \n",
    "    \n",
    "        mpv = [-6.911989827841637e-05, -0.0001423605703789109, -0.00042253863058252833] # value of the mean pixels\n",
    "        red_patch = [0.0, 0.0, 1.0] # value of the red code \n",
    "        \n",
    "        \n",
    "        red_patch = torch.tensor(red_patch).view(1,3,1,1)\n",
    "        red_patch = red_patch.to(device)\n",
    "        mpv = torch.tensor(mpv).view(1,3,1,1)\n",
    "        mpv = mpv.to(device)\n",
    "        # inpaint\n",
    "        with torch.no_grad():\n",
    "            x_mask = x - x * mask + mpv * mask # generate the occluded input [0 1]\n",
    "            x_red = x - x * mask + red_patch * mask # This is applying red patch to the inputs [0 1]\n",
    "            \n",
    "            inputx = torch.cat((x_mask, mask), dim=1)\n",
    "#             inputx = x_mask\n",
    "            output = model(inputx) # generate the output for the occluded input [0 1]\n",
    "            inpainted = poisson_blend_old(x_mask, output, mask) # this is GAN output [0 1]\n",
    "            inpainted1 = poisson_blend_old1(x_mask, output, mask) # another blend method\n",
    "            inpainted = inpainted.to(device)\n",
    "            inpainted1 = inpainted1.to(device)\n",
    "            \n",
    "            # store GAN blend output \n",
    "            clean_input = inpainted\n",
    "#             clean_input = normalize_tensor_batch(clean_input, mean, std) # normalize to [-1 1]\n",
    "            clean_input = torch.squeeze(clean_input) # remove the 1st dimension\n",
    "            cleanimgs[j] = clean_input.cpu().numpy() # store to a list\n",
    "            \n",
    "            # store GAN blend1 output \n",
    "            clean_input1 = inpainted1\n",
    "#             clean_input1 = normalize_tensor_batch(clean_input1, mean, std) # normalize to [-1 1]\n",
    "            clean_input1 = torch.squeeze(clean_input1) # remove the 1st dimension\n",
    "            cleanimgs1[j] = clean_input1.cpu().numpy() # store to a list\n",
    "            \n",
    "            # store patch output \n",
    "            clean_m_input = x_mask\n",
    "#             clean_m_input = normalize_tensor_batch(clean_m_input, mean, std) # normalize to [-1 1] range\n",
    "            clean_m_input = torch.squeeze(clean_m_input) # remove dimension\n",
    "            clean_m_imgs[j] = clean_m_input.cpu().numpy() # store to a list\n",
    "            \n",
    "            # store red patch output \n",
    "            clean_red_input = x_red\n",
    "#             clean_red_input = normalize_tensor_batch(clean_red_input, mean, std) # normalize to [-1 1] range\n",
    "            clean_red_input = torch.squeeze(clean_red_input) # remove dimension\n",
    "            clean_red_imgs[j] = clean_red_input.cpu().numpy() # store to a list\n",
    "            \n",
    "            # store GAN pure outputs\n",
    "            clean_output = output\n",
    "#             clean_output = normalize_tensor_batch(clean_output, mean, std) # normalize to [-1 1] range\n",
    "            clean_output = torch.squeeze(clean_output) # remove dimension\n",
    "            cleanouts[j] = clean_output.cpu().numpy() # store to a list\n",
    "\n",
    "#             print(x.shape)\n",
    "#             print(x_mask.shape)\n",
    "#             print(output.shape)\n",
    "#             print(inpainted.shape)\n",
    "#             print(inpainted1.shape)\n",
    "            save_imgs = torch.cat((x, x_mask, output, inpainted, inpainted1), dim=0) # combine images for illustration\n",
    "            save_image(save_imgs, \"GAN_reconstruct/\" + str(labels.cpu().numpy()[j]) + \"/\" + str(i).zfill(4) + \"_out_\" + str(j) + \".png\", nrow=3)\n",
    "            \n",
    "    \n",
    "    # this is tensor for GAN blend output \n",
    "    cleanimgs_tensor = torch.from_numpy(np.asarray(cleanimgs))\n",
    "    cleanimgs_tensor = cleanimgs_tensor.type(torch.FloatTensor)\n",
    "    cleanimgs_tensor = cleanimgs_tensor.to(device)\n",
    "    \n",
    "    # this is tensor for GAN blend1output \n",
    "    cleanimgs_tensor1 = torch.from_numpy(np.asarray(cleanimgs1))\n",
    "    cleanimgs_tensor1 = cleanimgs_tensor1.type(torch.FloatTensor)\n",
    "    cleanimgs_tensor1 = cleanimgs_tensor1.to(device)\n",
    "    \n",
    "    \n",
    "    # This is for the patch\n",
    "\n",
    "    cleanimgs_m_tensor = torch.from_numpy(np.asarray(clean_m_imgs))\n",
    "    cleanimgs_m_tensor = cleanimgs_m_tensor.type(torch.FloatTensor)\n",
    "    cleanimgs_m_tensor = cleanimgs_m_tensor.to(device)\n",
    "    \n",
    "     # This is for the red patch\n",
    "\n",
    "    cleanimgs_red_tensor = torch.from_numpy(np.asarray(clean_red_imgs))\n",
    "    cleanimgs_red_tensor = cleanimgs_red_tensor.type(torch.FloatTensor)\n",
    "    cleanimgs_red_tensor = cleanimgs_red_tensor.to(device)\n",
    "    \n",
    "    # this is tensor for GAN pure output \n",
    "    pureoutput_tensor = torch.from_numpy(np.asarray(cleanouts))\n",
    "    pureoutput_tensor = pureoutput_tensor.type(torch.FloatTensor)\n",
    "    pureoutput_tensor = pureoutput_tensor.to(device)\n",
    "\n",
    "\n",
    "\n",
    "    return cleanimgs_tensor, cleanimgs_tensor1, cleanimgs_m_tensor, cleanimgs_red_tensor, pureoutput_tensor\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "90fd9a650e044def80fb7e0801a36fb9",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(IntProgress(value=0, description='Verifying the GAN results', max=3158, style=ProgressStyle(des…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 0.0, 2.0, 0.0, 2.0, 0.0, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 1.0, 0.0, 1.0, 2.0, 0.0, 0.0, 2.0, 0.0, 2.0, 0.0, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 2.0, 0.0, 1.0, 2.0, 0.0, 0.0, 2.0, 0.0, 2.0, 0.0, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 0.0, 1.0, 2.0, 0.0, 0.0, 2.0, 0.0, 2.0, 0.0, 2.0, 2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 0.0, 1.0, 2.0, 0.0, 0.0, 2.0, 0.0, 2.0, 0.0, 2.0, 2.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 0.0, 1.0, 2.0, 0.0, 0.0, 2.0, 0.0, 2.0, 1.0, 2.0, 2.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 2.0, 0.0, 1.0, 2.0, 0.0, 0.0, 2.0, 0.0, 3.0, 1.0, 2.0, 2.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 0.0, 1.0, 2.0, 0.0, 0.0, 2.0, 0.0, 3.0, 1.0, 3.0, 2.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 0.0, 1.0, 2.0, 1.0, 0.0, 2.0, 0.0, 3.0, 1.0, 3.0, 2.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 0.0, 1.0, 2.0, 1.0, 0.0, 2.0, 0.0, 3.0, 1.0, 3.0, 2.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 2.0, 0.0, 1.0, 2.0, 1.0, 0.0, 2.0, 0.0, 3.0, 1.0, 3.0, 2.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 0.0, 1.0, 2.0, 1.0, 0.0, 2.0, 0.0, 3.0, 1.0, 3.0, 2.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 1.0, 2.0, 1.0, 0.0, 2.0, 0.0, 3.0, 1.0, 3.0, 2.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 1.0, 2.0, 1.0, 0.0, 2.0, 0.0, 3.0, 1.0, 3.0, 2.0, 1.0, 0.0, 0.0, 1.0, 2.0, 1.0, 0.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 2.0, 1.0, 2.0, 2.0, 1.0, 0.0, 2.0, 0.0, 3.0, 1.0, 3.0, 2.0, 1.0, 0.0, 0.0, 1.0, 2.0, 1.0, 0.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 2.0, 2.0, 1.0, 0.0, 2.0, 0.0, 3.0, 1.0, 3.0, 3.0, 1.0, 0.0, 0.0, 1.0, 2.0, 1.0, 0.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 2.0, 2.0, 1.0, 0.0, 2.0, 0.0, 3.0, 1.0, 3.0, 3.0, 1.0, 0.0, 0.0, 2.0, 2.0, 1.0, 0.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 2.0, 2.0, 1.0, 0.0, 2.0, 1.0, 3.0, 1.0, 3.0, 3.0, 1.0, 0.0, 0.0, 2.0, 2.0, 1.0, 0.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 2.0, 1.0, 2.0, 2.0, 1.0, 0.0, 3.0, 1.0, 3.0, 1.0, 3.0, 3.0, 1.0, 0.0, 0.0, 2.0, 2.0, 1.0, 0.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 2.0, 2.0, 1.0, 0.0, 3.0, 1.0, 3.0, 1.0, 3.0, 3.0, 1.0, 0.0, 0.0, 2.0, 2.0, 1.0, 0.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 2.0, 2.0, 1.0, 0.0, 3.0, 1.0, 3.0, 1.0, 3.0, 3.0, 1.0, 0.0, 0.0, 2.0, 2.0, 2.0, 0.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 2.0, 2.0, 1.0, 0.0, 3.0, 1.0, 3.0, 1.0, 3.0, 4.0, 1.0, 0.0, 0.0, 2.0, 2.0, 2.0, 0.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 2.0, 1.0, 2.0, 2.0, 1.0, 0.0, 3.0, 1.0, 3.0, 1.0, 3.0, 4.0, 1.0, 0.0, 0.0, 2.0, 2.0, 2.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 2.0, 2.0, 1.0, 0.0, 3.0, 1.0, 3.0, 1.0, 3.0, 4.0, 1.0, 0.0, 0.0, 2.0, 2.0, 2.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 2.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 3.0, 2.0, 1.0, 0.0, 3.0, 1.0, 3.0, 1.0, 3.0, 4.0, 1.0, 0.0, 0.0, 2.0, 2.0, 2.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 2.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 3.0, 2.0, 1.0, 0.0, 3.0, 1.0, 3.0, 2.0, 3.0, 4.0, 1.0, 0.0, 0.0, 2.0, 2.0, 2.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 2.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 2.0, 1.0, 3.0, 2.0, 1.0, 0.0, 3.0, 1.0, 3.0, 2.0, 3.0, 4.0, 1.0, 0.0, 0.0, 2.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 2.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 3.0, 2.0, 1.0, 0.0, 3.0, 2.0, 3.0, 2.0, 3.0, 4.0, 1.0, 0.0, 0.0, 2.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 2.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 3.0, 2.0, 1.0, 0.0, 3.0, 2.0, 3.0, 2.0, 3.0, 4.0, 1.0, 0.0, 0.0, 2.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 3.0, 2.0, 1.0, 0.0, 3.0, 2.0, 3.0, 2.0, 3.0, 4.0, 2.0, 0.0, 0.0, 2.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 2.0, 1.0, 3.0, 2.0, 1.0, 0.0, 3.0, 2.0, 3.0, 2.0, 3.0, 4.0, 2.0, 0.0, 1.0, 2.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 3.0, 2.0, 1.0, 0.0, 3.0, 2.0, 4.0, 2.0, 3.0, 4.0, 2.0, 0.0, 1.0, 2.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 3.0, 2.0, 1.0, 0.0, 3.0, 2.0, 4.0, 2.0, 3.0, 4.0, 3.0, 0.0, 1.0, 2.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 3.0, 2.0, 1.0, 0.0, 3.0, 2.0, 4.0, 2.0, 3.0, 4.0, 3.0, 0.0, 1.0, 2.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 2.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 2.0, 1.0, 3.0, 2.0, 2.0, 0.0, 3.0, 2.0, 4.0, 2.0, 3.0, 4.0, 3.0, 0.0, 1.0, 2.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 2.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 3.0, 2.0, 2.0, 0.0, 3.0, 2.0, 4.0, 2.0, 3.0, 4.0, 3.0, 0.0, 1.0, 2.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 2.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 3.0, 2.0, 2.0, 0.0, 3.0, 2.0, 5.0, 2.0, 3.0, 4.0, 3.0, 0.0, 1.0, 2.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 2.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 3.0, 2.0, 2.0, 0.0, 3.0, 2.0, 5.0, 2.0, 3.0, 4.0, 3.0, 0.0, 1.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 2.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 2.0, 1.0, 3.0, 2.0, 2.0, 0.0, 3.0, 2.0, 5.0, 2.0, 3.0, 4.0, 3.0, 0.0, 1.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 3.0, 2.0, 2.0, 0.0, 3.0, 2.0, 5.0, 3.0, 3.0, 4.0, 3.0, 0.0, 1.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 3.0, 3.0, 2.0, 0.0, 3.0, 2.0, 5.0, 3.0, 3.0, 4.0, 3.0, 0.0, 1.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 3.0, 3.0, 2.0, 0.0, 3.0, 2.0, 6.0, 3.0, 3.0, 4.0, 3.0, 0.0, 1.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 2.0, 1.0, 3.0, 3.0, 2.0, 0.0, 3.0, 2.0, 6.0, 3.0, 3.0, 4.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 3.0, 3.0, 2.0, 0.0, 3.0, 2.0, 7.0, 3.0, 3.0, 4.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 1.0, 3.0, 3.0, 2.0, 0.0, 3.0, 2.0, 7.0, 3.0, 3.0, 4.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 2.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 2.0, 3.0, 3.0, 2.0, 0.0, 3.0, 2.0, 7.0, 3.0, 3.0, 4.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 2.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 2.0, 2.0, 3.0, 3.0, 3.0, 0.0, 3.0, 2.0, 7.0, 3.0, 3.0, 4.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 2.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 2.0, 3.0, 3.0, 3.0, 0.0, 3.0, 2.0, 7.0, 3.0, 3.0, 4.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 2.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 2.0, 3.0, 3.0, 3.0, 0.0, 3.0, 2.0, 7.0, 3.0, 4.0, 4.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 3.0, 2.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 2.0, 3.0, 3.0, 3.0, 0.0, 3.0, 2.0, 7.0, 3.0, 4.0, 4.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 4.0, 2.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 2.0, 2.0, 3.0, 3.0, 3.0, 0.0, 3.0, 2.0, 7.0, 3.0, 4.0, 4.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 4.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 2.0, 1.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 2.0, 3.0, 3.0, 3.0, 0.0, 3.0, 2.0, 7.0, 3.0, 4.0, 4.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 4.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 2.0, 2.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 2.0, 3.0, 3.0, 4.0, 0.0, 3.0, 2.0, 7.0, 3.0, 4.0, 4.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 4.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 2.0, 2.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 2.0, 2.0, 3.0, 3.0, 4.0, 0.0, 3.0, 2.0, 7.0, 3.0, 4.0, 5.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 4.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 2.0, 2.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 3.0, 2.0, 3.0, 3.0, 4.0, 0.0, 3.0, 2.0, 7.0, 3.0, 4.0, 5.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 4.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 2.0, 2.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 3.0, 2.0, 3.0, 3.0, 4.0, 0.0, 3.0, 2.0, 7.0, 4.0, 4.0, 5.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 4.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 2.0, 2.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 3.0, 2.0, 3.0, 3.0, 4.0, 0.0, 3.0, 2.0, 7.0, 4.0, 4.0, 5.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 5.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 2.0, 2.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 3.0, 2.0, 3.0, 3.0, 4.0, 0.0, 3.0, 2.0, 7.0, 4.0, 4.0, 5.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 6.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 2.0, 2.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 3.0, 2.0, 3.0, 3.0, 4.0, 0.0, 3.0, 2.0, 7.0, 4.0, 4.0, 5.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 0.0, 2.0, 1.0, 6.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 2.0, 2.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 3.0, 2.0, 3.0, 3.0, 4.0, 0.0, 3.0, 2.0, 7.0, 4.0, 4.0, 5.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 0.0, 2.0, 1.0, 6.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 3.0, 2.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 3.0, 2.0, 3.0, 3.0, 4.0, 0.0, 3.0, 2.0, 7.0, 4.0, 4.0, 5.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 0.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 3.0, 2.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 3.0, 2.0, 3.0, 3.0, 4.0, 0.0, 4.0, 2.0, 7.0, 4.0, 4.0, 5.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 0.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 3.0, 2.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 3.0, 2.0, 3.0, 3.0, 4.0, 0.0, 4.0, 2.0, 7.0, 5.0, 4.0, 5.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 0.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 3.0, 2.0, 2.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 3.0, 2.0, 3.0, 3.0, 4.0, 0.0, 4.0, 2.0, 7.0, 5.0, 4.0, 5.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 0.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 3.0, 2.0, 3.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 3.0, 2.0, 4.0, 3.0, 4.0, 0.0, 4.0, 2.0, 7.0, 5.0, 4.0, 5.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 0.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 3.0, 2.0, 3.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 3.0, 2.0, 4.0, 3.0, 4.0, 0.0, 5.0, 2.0, 7.0, 5.0, 4.0, 5.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 0.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 3.0, 2.0, 3.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 3.0, 2.0, 4.0, 3.0, 4.0, 0.0, 5.0, 2.0, 7.0, 5.0, 4.0, 5.0, 3.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 3.0, 2.0, 3.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 3.0, 2.0, 4.0, 3.0, 4.0, 0.0, 5.0, 2.0, 7.0, 5.0, 4.0, 5.0, 4.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 3.0, 2.0, 3.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 3.0, 2.0, 5.0, 3.0, 4.0, 0.0, 5.0, 2.0, 7.0, 5.0, 4.0, 5.0, 4.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 3.0, 2.0, 3.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 4.0, 2.0, 5.0, 3.0, 4.0, 0.0, 5.0, 2.0, 7.0, 5.0, 4.0, 5.0, 4.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 3.0, 2.0, 3.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 4.0, 3.0, 5.0, 3.0, 4.0, 0.0, 5.0, 2.0, 7.0, 5.0, 4.0, 5.0, 4.0, 0.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 3.0, 2.0, 3.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 4.0, 3.0, 5.0, 3.0, 4.0, 0.0, 5.0, 2.0, 7.0, 5.0, 4.0, 5.0, 4.0, 1.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 3.0, 2.0, 3.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 4.0, 3.0, 5.0, 3.0, 4.0, 0.0, 5.0, 2.0, 7.0, 5.0, 4.0, 6.0, 4.0, 1.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 3.0, 2.0, 3.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 4.0, 3.0, 5.0, 3.0, 4.0, 0.0, 5.0, 2.0, 7.0, 5.0, 4.0, 6.0, 4.0, 1.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 3.0, 2.0, 3.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 4.0, 3.0, 6.0, 3.0, 4.0, 0.0, 5.0, 2.0, 7.0, 5.0, 4.0, 6.0, 4.0, 1.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 3.0, 2.0, 3.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 4.0, 3.0, 6.0, 3.0, 4.0, 0.0, 5.0, 2.0, 7.0, 5.0, 4.0, 6.0, 4.0, 1.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 3.0, 2.0, 3.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 4.0, 3.0, 6.0, 3.0, 4.0, 0.0, 5.0, 2.0, 8.0, 5.0, 4.0, 6.0, 4.0, 1.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 3.0, 2.0, 3.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 4.0, 3.0, 6.0, 3.0, 4.0, 0.0, 5.0, 2.0, 8.0, 5.0, 4.0, 6.0, 4.0, 1.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 4.0, 2.0, 3.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 5.0, 3.0, 6.0, 3.0, 4.0, 0.0, 5.0, 2.0, 8.0, 5.0, 4.0, 6.0, 4.0, 1.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 4.0, 2.0, 3.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 5.0, 3.0, 6.0, 3.0, 4.0, 0.0, 5.0, 2.0, 8.0, 6.0, 4.0, 6.0, 4.0, 1.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 4.0, 2.0, 3.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 5.0, 3.0, 6.0, 3.0, 5.0, 0.0, 5.0, 2.0, 8.0, 6.0, 4.0, 6.0, 4.0, 1.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 4.0, 2.0, 3.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 5.0, 3.0, 6.0, 3.0, 5.0, 0.0, 5.0, 2.0, 8.0, 6.0, 5.0, 6.0, 4.0, 1.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 4.0, 2.0, 3.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 5.0, 3.0, 6.0, 3.0, 5.0, 0.0, 5.0, 2.0, 8.0, 6.0, 5.0, 6.0, 4.0, 1.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 5.0, 2.0, 3.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 5.0, 3.0, 6.0, 4.0, 5.0, 0.0, 5.0, 2.0, 8.0, 6.0, 5.0, 6.0, 4.0, 1.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 5.0, 2.0, 3.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 5.0, 3.0, 6.0, 4.0, 5.0, 0.0, 5.0, 2.0, 8.0, 6.0, 5.0, 6.0, 4.0, 1.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 7.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 5.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 5.0, 3.0, 6.0, 4.0, 5.0, 0.0, 5.0, 2.0, 8.0, 6.0, 5.0, 6.0, 4.0, 1.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 5.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 5.0, 3.0, 6.0, 4.0, 5.0, 0.0, 5.0, 2.0, 8.0, 6.0, 5.0, 6.0, 4.0, 1.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 5.0, 3.0, 6.0, 5.0, 5.0, 0.0, 5.0, 2.0, 8.0, 6.0, 5.0, 6.0, 4.0, 1.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 6.0, 3.0, 6.0, 5.0, 5.0, 0.0, 5.0, 2.0, 8.0, 6.0, 5.0, 6.0, 4.0, 1.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 6.0, 3.0, 6.0, 5.0, 5.0, 0.0, 5.0, 2.0, 8.0, 6.0, 5.0, 6.0, 4.0, 2.0, 2.0, 3.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 6.0, 3.0, 6.0, 5.0, 5.0, 0.0, 5.0, 2.0, 8.0, 6.0, 5.0, 6.0, 4.0, 2.0, 2.0, 4.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 6.0, 3.0, 6.0, 5.0, 5.0, 0.0, 5.0, 2.0, 8.0, 7.0, 5.0, 6.0, 4.0, 2.0, 2.0, 4.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 1.0, 1.0, 0.0, 2.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 6.0, 3.0, 6.0, 5.0, 5.0, 0.0, 5.0, 2.0, 8.0, 7.0, 5.0, 6.0, 4.0, 2.0, 2.0, 4.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 1.0, 1.0, 0.0, 3.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 6.0, 3.0, 7.0, 5.0, 5.0, 0.0, 5.0, 2.0, 8.0, 7.0, 5.0, 6.0, 4.0, 2.0, 2.0, 4.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 1.0, 1.0, 0.0, 3.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 6.0, 3.0, 7.0, 5.0, 5.0, 0.0, 5.0, 2.0, 8.0, 7.0, 5.0, 6.0, 4.0, 2.0, 2.0, 4.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 0.0, 3.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 6.0, 3.0, 7.0, 5.0, 5.0, 0.0, 5.0, 2.0, 8.0, 7.0, 5.0, 6.0, 4.0, 2.0, 2.0, 4.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 3.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 7.0, 3.0, 7.0, 5.0, 5.0, 0.0, 5.0, 2.0, 8.0, 7.0, 5.0, 6.0, 4.0, 2.0, 2.0, 4.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 3.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 7.0, 3.0, 7.0, 5.0, 5.0, 0.0, 5.0, 2.0, 8.0, 7.0, 5.0, 6.0, 4.0, 2.0, 2.0, 4.0, 3.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 3.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 7.0, 3.0, 7.0, 5.0, 5.0, 0.0, 5.0, 2.0, 8.0, 7.0, 5.0, 6.0, 5.0, 2.0, 2.0, 4.0, 3.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 3.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 7.0, 3.0, 7.0, 5.0, 5.0, 0.0, 6.0, 2.0, 8.0, 7.0, 5.0, 6.0, 5.0, 2.0, 2.0, 4.0, 3.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 3.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 8.0, 3.0, 7.0, 5.0, 5.0, 0.0, 6.0, 2.0, 8.0, 7.0, 5.0, 6.0, 5.0, 2.0, 2.0, 4.0, 3.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 3.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 8.0, 3.0, 7.0, 5.0, 5.0, 0.0, 6.0, 3.0, 8.0, 7.0, 5.0, 6.0, 5.0, 2.0, 2.0, 4.0, 3.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 3.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 8.0, 4.0, 7.0, 5.0, 5.0, 0.0, 6.0, 3.0, 8.0, 7.0, 5.0, 6.0, 5.0, 2.0, 2.0, 4.0, 3.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 3.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 8.0, 4.0, 7.0, 5.0, 5.0, 0.0, 6.0, 3.0, 8.0, 8.0, 5.0, 6.0, 5.0, 2.0, 2.0, 4.0, 3.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 3.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 8.0, 4.0, 7.0, 5.0, 5.0, 0.0, 6.0, 3.0, 8.0, 9.0, 5.0, 6.0, 5.0, 2.0, 2.0, 4.0, 3.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 3.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 8.0, 4.0, 7.0, 5.0, 5.0, 0.0, 6.0, 3.0, 8.0, 9.0, 5.0, 6.0, 5.0, 2.0, 2.0, 4.0, 3.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 9.0, 4.0, 7.0, 5.0, 5.0, 0.0, 6.0, 3.0, 8.0, 9.0, 5.0, 6.0, 5.0, 2.0, 2.0, 4.0, 3.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 9.0, 4.0, 7.0, 5.0, 5.0, 1.0, 6.0, 3.0, 8.0, 9.0, 5.0, 6.0, 5.0, 2.0, 2.0, 4.0, 3.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 9.0, 4.0, 7.0, 5.0, 5.0, 1.0, 6.0, 3.0, 8.0, 9.0, 5.0, 6.0, 5.0, 2.0, 2.0, 4.0, 3.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 9.0, 4.0, 8.0, 5.0, 5.0, 1.0, 6.0, 3.0, 8.0, 9.0, 5.0, 6.0, 5.0, 2.0, 2.0, 4.0, 3.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 9.0, 4.0, 8.0, 5.0, 5.0, 1.0, 6.0, 3.0, 8.0, 9.0, 5.0, 6.0, 5.0, 3.0, 2.0, 4.0, 3.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 9.0, 4.0, 8.0, 5.0, 5.0, 1.0, 6.0, 3.0, 8.0, 9.0, 5.0, 6.0, 6.0, 3.0, 2.0, 4.0, 3.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 9.0, 4.0, 8.0, 5.0, 5.0, 1.0, 6.0, 3.0, 8.0, 9.0, 6.0, 6.0, 6.0, 3.0, 2.0, 4.0, 3.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 9.0, 4.0, 8.0, 5.0, 5.0, 1.0, 6.0, 3.0, 8.0, 10.0, 6.0, 6.0, 6.0, 3.0, 2.0, 4.0, 3.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 9.0, 4.0, 8.0, 5.0, 5.0, 1.0, 6.0, 3.0, 8.0, 10.0, 6.0, 6.0, 6.0, 3.0, 2.0, 4.0, 3.0, 4.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]\n",
      "[0.0, 9.0, 4.0, 8.0, 5.0, 5.0, 1.0, 6.0, 3.0, 8.0, 10.0, 6.0, 6.0, 6.0, 3.0, 2.0, 4.0, 3.0, 4.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 5.0, 0.0, 1.0, 0.0, 0.0]\n",
      "[0.0, 9.0, 5.0, 8.0, 5.0, 5.0, 1.0, 6.0, 3.0, 8.0, 10.0, 6.0, 6.0, 6.0, 3.0, 2.0, 4.0, 3.0, 4.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 5.0, 0.0, 1.0, 0.0, 0.0]\n",
      "[0.0, 9.0, 5.0, 8.0, 5.0, 5.0, 1.0, 6.0, 3.0, 8.0, 10.0, 6.0, 6.0, 6.0, 3.0, 2.0, 4.0, 3.0, 4.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 0.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 9.0, 5.0, 8.0, 5.0, 5.0, 1.0, 6.0, 3.0, 8.0, 10.0, 6.0, 6.0, 6.0, 3.0, 2.0, 4.0, 3.0, 4.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 1.0, 0.0]\n",
      "[0.0, 9.0, 5.0, 8.0, 6.0, 5.0, 1.0, 6.0, 3.0, 8.0, 10.0, 6.0, 6.0, 6.0, 3.0, 2.0, 4.0, 3.0, 4.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 1.0, 0.0]\n",
      "[0.0, 9.0, 5.0, 8.0, 6.0, 5.0, 2.0, 6.0, 3.0, 8.0, 10.0, 6.0, 6.0, 6.0, 3.0, 2.0, 4.0, 3.0, 4.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 1.0, 0.0]\n",
      "[0.0, 9.0, 5.0, 8.0, 6.0, 5.0, 2.0, 6.0, 3.0, 8.0, 10.0, 6.0, 6.0, 6.0, 3.0, 2.0, 4.0, 3.0, 5.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 1.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 9.0, 5.0, 8.0, 6.0, 5.0, 2.0, 6.0, 3.0, 8.0, 10.0, 6.0, 6.0, 6.0, 3.0, 2.0, 4.0, 4.0, 5.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 8.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 1.0, 0.0]\n",
      "[0.0, 9.0, 5.0, 8.0, 6.0, 5.0, 2.0, 6.0, 3.0, 8.0, 10.0, 6.0, 6.0, 6.0, 3.0, 2.0, 4.0, 4.0, 5.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 9.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 1.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 8.0, 6.0, 5.0, 2.0, 6.0, 3.0, 8.0, 10.0, 6.0, 6.0, 6.0, 3.0, 2.0, 4.0, 4.0, 5.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 9.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 1.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 8.0, 6.0, 5.0, 2.0, 6.0, 3.0, 8.0, 10.0, 6.0, 6.0, 6.0, 3.0, 2.0, 4.0, 4.0, 5.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 9.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 9.0, 6.0, 8.0, 6.0, 5.0, 2.0, 6.0, 3.0, 8.0, 10.0, 7.0, 6.0, 6.0, 3.0, 2.0, 4.0, 4.0, 5.0, 0.0, 1.0, 2.0, 1.0, 2.0, 1.0, 9.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 8.0, 6.0, 5.0, 2.0, 6.0, 3.0, 8.0, 10.0, 7.0, 6.0, 6.0, 3.0, 2.0, 4.0, 4.0, 5.0, 0.0, 1.0, 3.0, 1.0, 2.0, 1.0, 9.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 8.0, 6.0, 5.0, 2.0, 7.0, 3.0, 8.0, 10.0, 7.0, 6.0, 6.0, 3.0, 2.0, 4.0, 4.0, 5.0, 0.0, 1.0, 3.0, 1.0, 2.0, 1.0, 9.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 8.0, 6.0, 5.0, 2.0, 7.0, 3.0, 8.0, 10.0, 7.0, 6.0, 6.0, 3.0, 2.0, 4.0, 4.0, 5.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 9.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 9.0, 6.0, 8.0, 6.0, 5.0, 2.0, 7.0, 3.0, 8.0, 10.0, 8.0, 6.0, 6.0, 3.0, 2.0, 4.0, 4.0, 5.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 9.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 8.0, 6.0, 5.0, 2.0, 7.0, 3.0, 8.0, 10.0, 8.0, 6.0, 6.0, 3.0, 2.0, 4.0, 4.0, 5.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 10.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 8.0, 6.0, 5.0, 2.0, 7.0, 3.0, 8.0, 10.0, 8.0, 6.0, 6.0, 3.0, 2.0, 4.0, 5.0, 5.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 10.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 9.0, 6.0, 5.0, 2.0, 7.0, 3.0, 8.0, 10.0, 8.0, 6.0, 6.0, 3.0, 2.0, 4.0, 5.0, 5.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 10.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 9.0, 6.0, 9.0, 6.0, 5.0, 3.0, 7.0, 3.0, 8.0, 10.0, 8.0, 6.0, 6.0, 3.0, 2.0, 4.0, 5.0, 5.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 10.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 9.0, 6.0, 5.0, 3.0, 7.0, 3.0, 9.0, 10.0, 8.0, 6.0, 6.0, 3.0, 2.0, 4.0, 5.0, 5.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 10.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 9.0, 6.0, 5.0, 3.0, 8.0, 3.0, 9.0, 10.0, 8.0, 6.0, 6.0, 3.0, 2.0, 4.0, 5.0, 5.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 10.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 9.0, 7.0, 5.0, 3.0, 8.0, 3.0, 9.0, 10.0, 8.0, 6.0, 6.0, 3.0, 2.0, 4.0, 5.0, 5.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 10.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 9.0, 6.0, 9.0, 7.0, 5.0, 3.0, 8.0, 3.0, 9.0, 10.0, 8.0, 6.0, 7.0, 3.0, 2.0, 4.0, 5.0, 5.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 10.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 9.0, 7.0, 5.0, 3.0, 8.0, 3.0, 9.0, 10.0, 8.0, 6.0, 7.0, 3.0, 2.0, 5.0, 5.0, 5.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 10.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 9.0, 8.0, 5.0, 3.0, 8.0, 3.0, 9.0, 10.0, 8.0, 6.0, 7.0, 3.0, 2.0, 5.0, 5.0, 5.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 10.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 9.0, 8.0, 5.0, 3.0, 8.0, 3.0, 9.0, 10.0, 8.0, 6.0, 7.0, 3.0, 2.0, 5.0, 5.0, 5.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 11.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 9.0, 6.0, 9.0, 8.0, 5.0, 3.0, 8.0, 3.0, 9.0, 10.0, 8.0, 6.0, 7.0, 3.0, 2.0, 5.0, 5.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 11.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 9.0, 8.0, 5.0, 3.0, 8.0, 3.0, 10.0, 10.0, 8.0, 6.0, 7.0, 3.0, 2.0, 5.0, 5.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 11.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 9.0, 8.0, 5.0, 3.0, 8.0, 3.0, 10.0, 10.0, 8.0, 6.0, 8.0, 3.0, 2.0, 5.0, 5.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 11.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 9.0, 8.0, 5.0, 3.0, 8.0, 3.0, 10.0, 10.0, 8.0, 6.0, 8.0, 4.0, 2.0, 5.0, 5.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 11.0, 2.0, 2.0, 1.0, 1.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 9.0, 6.0, 9.0, 8.0, 5.0, 3.0, 8.0, 3.0, 10.0, 10.0, 8.0, 6.0, 8.0, 4.0, 2.0, 5.0, 5.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 11.0, 2.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 9.0, 8.0, 5.0, 3.0, 8.0, 3.0, 10.0, 10.0, 8.0, 6.0, 8.0, 4.0, 2.0, 5.0, 6.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 11.0, 2.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 9.0, 8.0, 5.0, 3.0, 8.0, 3.0, 10.0, 10.0, 8.0, 6.0, 9.0, 4.0, 2.0, 5.0, 6.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 11.0, 2.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 6.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 9.0, 8.0, 5.0, 3.0, 8.0, 3.0, 10.0, 10.0, 8.0, 6.0, 9.0, 4.0, 2.0, 5.0, 6.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 11.0, 2.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 7.0, 0.0, 1.0, 2.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 9.0, 6.0, 9.0, 8.0, 5.0, 3.0, 8.0, 3.0, 10.0, 10.0, 8.0, 6.0, 9.0, 4.0, 2.0, 5.0, 6.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 11.0, 3.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 7.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 9.0, 8.0, 5.0, 3.0, 8.0, 3.0, 10.0, 10.0, 8.0, 6.0, 9.0, 4.0, 2.0, 5.0, 6.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 12.0, 3.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 6.0, 2.0, 4.0, 1.0, 0.0, 7.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 9.0, 6.0, 9.0, 8.0, 5.0, 3.0, 8.0, 3.0, 10.0, 10.0, 8.0, 6.0, 9.0, 4.0, 2.0, 5.0, 6.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 12.0, 3.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 1.0, 0.0, 7.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 10.0, 6.0, 9.0, 8.0, 5.0, 3.0, 8.0, 3.0, 10.0, 10.0, 8.0, 6.0, 9.0, 4.0, 2.0, 5.0, 6.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 12.0, 3.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 1.0, 0.0, 7.0, 0.0, 1.0, 2.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 10.0, 6.0, 10.0, 8.0, 5.0, 3.0, 8.0, 3.0, 10.0, 10.0, 8.0, 6.0, 9.0, 4.0, 2.0, 5.0, 6.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 12.0, 3.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 1.0, 0.0, 7.0, 0.0, 1.0, 2.0, 0.0]\n",
      "[0.0, 10.0, 6.0, 10.0, 8.0, 5.0, 3.0, 8.0, 3.0, 10.0, 10.0, 8.0, 6.0, 9.0, 4.0, 2.0, 5.0, 6.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 12.0, 3.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 1.0, 0.0, 7.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 10.0, 6.0, 10.0, 8.0, 5.0, 3.0, 8.0, 3.0, 10.0, 10.0, 8.0, 6.0, 10.0, 4.0, 2.0, 5.0, 6.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 12.0, 3.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 1.0, 0.0, 7.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 10.0, 7.0, 10.0, 8.0, 5.0, 3.0, 8.0, 3.0, 10.0, 10.0, 8.0, 6.0, 10.0, 4.0, 2.0, 5.0, 6.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 12.0, 3.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 1.0, 0.0, 7.0, 0.0, 2.0, 2.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 10.0, 7.0, 10.0, 8.0, 5.0, 3.0, 8.0, 4.0, 10.0, 10.0, 8.0, 6.0, 10.0, 4.0, 2.0, 5.0, 6.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 12.0, 3.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 1.0, 0.0, 7.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 10.0, 7.0, 10.0, 9.0, 5.0, 3.0, 8.0, 4.0, 10.0, 10.0, 8.0, 6.0, 10.0, 4.0, 2.0, 5.0, 6.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 12.0, 3.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 1.0, 0.0, 7.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 10.0, 7.0, 10.0, 9.0, 5.0, 3.0, 8.0, 4.0, 10.0, 10.0, 8.0, 6.0, 10.0, 4.0, 2.0, 5.0, 6.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 12.0, 3.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 7.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 10.0, 7.0, 10.0, 9.0, 5.0, 3.0, 8.0, 4.0, 10.0, 10.0, 8.0, 6.0, 10.0, 4.0, 2.0, 5.0, 6.0, 6.0, 0.0, 1.0, 3.0, 1.0, 2.0, 2.0, 13.0, 3.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 7.0, 0.0, 2.0, 2.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 10.0, 7.0, 10.0, 9.0, 5.0, 3.0, 8.0, 4.0, 10.0, 10.0, 8.0, 6.0, 10.0, 4.0, 2.0, 5.0, 6.0, 6.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 13.0, 3.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 7.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 10.0, 7.0, 10.0, 9.0, 5.0, 3.0, 8.0, 4.0, 10.0, 10.0, 8.0, 6.0, 10.0, 4.0, 2.0, 5.0, 6.0, 6.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 14.0, 3.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 7.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 10.0, 7.0, 10.0, 9.0, 5.0, 3.0, 8.0, 4.0, 10.0, 10.0, 8.0, 6.0, 10.0, 4.0, 2.0, 5.0, 6.0, 7.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 14.0, 3.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 7.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 11.0, 7.0, 10.0, 9.0, 5.0, 3.0, 8.0, 4.0, 10.0, 10.0, 8.0, 6.0, 10.0, 4.0, 2.0, 5.0, 6.0, 7.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 14.0, 3.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 7.0, 0.0, 2.0, 2.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 11.0, 7.0, 10.0, 9.0, 5.0, 3.0, 8.0, 4.0, 10.0, 11.0, 8.0, 6.0, 10.0, 4.0, 2.0, 5.0, 6.0, 7.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 14.0, 3.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 7.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 11.0, 7.0, 10.0, 9.0, 5.0, 3.0, 8.0, 5.0, 10.0, 11.0, 8.0, 6.0, 10.0, 4.0, 2.0, 5.0, 6.0, 7.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 14.0, 3.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 7.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 11.0, 7.0, 10.0, 9.0, 5.0, 3.0, 8.0, 5.0, 10.0, 12.0, 8.0, 6.0, 10.0, 4.0, 2.0, 5.0, 6.0, 7.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 14.0, 3.0, 2.0, 1.0, 2.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 7.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 11.0, 7.0, 10.0, 9.0, 5.0, 3.0, 8.0, 5.0, 10.0, 12.0, 8.0, 6.0, 10.0, 4.0, 2.0, 5.0, 6.0, 7.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 14.0, 3.0, 2.0, 1.0, 3.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 7.0, 0.0, 2.0, 2.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 11.0, 7.0, 10.0, 9.0, 5.0, 3.0, 8.0, 5.0, 10.0, 12.0, 8.0, 7.0, 10.0, 4.0, 2.0, 5.0, 6.0, 7.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 14.0, 3.0, 2.0, 1.0, 3.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 7.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 11.0, 7.0, 10.0, 9.0, 5.0, 3.0, 8.0, 5.0, 10.0, 12.0, 8.0, 7.0, 10.0, 4.0, 2.0, 5.0, 6.0, 7.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 14.0, 3.0, 2.0, 1.0, 3.0, 4.0, 0.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 8.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 11.0, 7.0, 10.0, 9.0, 5.0, 3.0, 8.0, 5.0, 10.0, 12.0, 8.0, 7.0, 10.0, 4.0, 2.0, 5.0, 6.0, 7.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 14.0, 3.0, 2.0, 1.0, 3.0, 4.0, 1.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 8.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 11.0, 8.0, 10.0, 9.0, 5.0, 3.0, 8.0, 5.0, 10.0, 12.0, 8.0, 7.0, 10.0, 4.0, 2.0, 5.0, 6.0, 7.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 14.0, 3.0, 2.0, 1.0, 3.0, 4.0, 1.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 8.0, 0.0, 2.0, 2.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 11.0, 8.0, 10.0, 9.0, 5.0, 3.0, 8.0, 6.0, 10.0, 12.0, 8.0, 7.0, 10.0, 4.0, 2.0, 5.0, 6.0, 7.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 14.0, 3.0, 2.0, 1.0, 3.0, 4.0, 1.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 8.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 11.0, 8.0, 10.0, 9.0, 5.0, 3.0, 8.0, 6.0, 10.0, 12.0, 8.0, 7.0, 10.0, 4.0, 2.0, 5.0, 6.0, 7.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 14.0, 3.0, 2.0, 1.0, 3.0, 4.0, 1.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 9.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 11.0, 8.0, 10.0, 9.0, 5.0, 3.0, 8.0, 6.0, 10.0, 12.0, 8.0, 7.0, 10.0, 4.0, 2.0, 5.0, 6.0, 8.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 14.0, 3.0, 2.0, 1.0, 3.0, 4.0, 1.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 9.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 11.0, 8.0, 10.0, 9.0, 5.0, 3.0, 8.0, 6.0, 10.0, 12.0, 8.0, 7.0, 10.0, 4.0, 2.0, 5.0, 6.0, 8.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 14.0, 3.0, 2.0, 2.0, 3.0, 4.0, 1.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 9.0, 0.0, 2.0, 2.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/ipykernel_launcher.py:38: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 11.0, 8.0, 10.0, 9.0, 5.0, 3.0, 8.0, 6.0, 10.0, 12.0, 8.0, 7.0, 10.0, 4.0, 2.0, 5.0, 7.0, 8.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 14.0, 3.0, 2.0, 2.0, 3.0, 4.0, 1.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 9.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 11.0, 8.0, 10.0, 9.0, 5.0, 3.0, 8.0, 6.0, 11.0, 12.0, 8.0, 7.0, 10.0, 4.0, 2.0, 5.0, 7.0, 8.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 14.0, 3.0, 2.0, 2.0, 3.0, 4.0, 1.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 9.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 11.0, 8.0, 10.0, 10.0, 5.0, 3.0, 8.0, 6.0, 11.0, 12.0, 8.0, 7.0, 10.0, 4.0, 2.0, 5.0, 7.0, 8.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 14.0, 3.0, 2.0, 2.0, 3.0, 4.0, 1.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 9.0, 0.0, 2.0, 2.0, 0.0]\n",
      "[0.0, 12.0, 8.0, 10.0, 10.0, 5.0, 3.0, 8.0, 6.0, 11.0, 12.0, 8.0, 7.0, 10.0, 4.0, 2.0, 5.0, 7.0, 8.0, 0.0, 2.0, 3.0, 1.0, 2.0, 2.0, 14.0, 3.0, 2.0, 2.0, 3.0, 4.0, 1.0, 1.0, 7.0, 2.0, 4.0, 2.0, 0.0, 9.0, 0.0, 2.0, 2.0, 0.0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:114: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n",
      "/home/user/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/gallery/stencil.py:110: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  diag[s] = 0\n"
     ]
    },
    {
     "ename": "TypeError",
     "evalue": "Failed generating smoothed_aggregation_solver",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m~/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/blackbox.py\u001b[0m in \u001b[0;36msolver\u001b[0;34m(A, config)\u001b[0m\n\u001b[1;32m    206\u001b[0m                                         \u001b[0mpostsmoother\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mconfig\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'postsmoother'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 207\u001b[0;31m                                         keep=config['keep'])\n\u001b[0m\u001b[1;32m    208\u001b[0m     \u001b[0;32mexcept\u001b[0m \u001b[0mBaseException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/aggregation/aggregation.py\u001b[0m in \u001b[0;36msmoothed_aggregation_solver\u001b[0;34m(A, B, BH, symmetry, strength, aggregate, smooth, presmoother, postsmoother, improve_candidates, max_levels, max_coarse, diagonal_dominance, keep, **kwargs)\u001b[0m\n\u001b[1;32m    286\u001b[0m         extend_hierarchy(levels, strength, aggregate, smooth,\n\u001b[0;32m--> 287\u001b[0;31m                          improve_candidates, diagonal_dominance, keep)\n\u001b[0m\u001b[1;32m    288\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/aggregation/aggregation.py\u001b[0m in \u001b[0;36mextend_hierarchy\u001b[0;34m(levels, strength, aggregate, smooth, improve_candidates, diagonal_dominance, keep)\u001b[0m\n\u001b[1;32m    327\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 328\u001b[0;31m             \u001b[0mC\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mevolution_strength_of_connection\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mA\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mB\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    329\u001b[0m     \u001b[0;32melif\u001b[0m \u001b[0mfn\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'energy_based'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/strength.py\u001b[0m in \u001b[0;36mevolution_strength_of_connection\u001b[0;34m(A, B, epsilon, k, proj_type, block_flag, symmetrize_measure)\u001b[0m\n\u001b[1;32m    613\u001b[0m     \u001b[0mId\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msparse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0meye\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdimen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdimen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mformat\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"csr\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mA\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 614\u001b[0;31m     \u001b[0mAtilde\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mId\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m1.0\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mrho_DinvA\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mDinv_A\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    615\u001b[0m     \u001b[0mAtilde\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAtilde\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mT\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtocsr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda3/envs/pytorch/lib/python3.7/site-packages/scipy/sparse/base.py\u001b[0m in \u001b[0;36m__rmul__\u001b[0;34m(self, other)\u001b[0m\n\u001b[1;32m    544\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0misscalarlike\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mother\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 545\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__mul__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mother\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    546\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda3/envs/pytorch/lib/python3.7/site-packages/scipy/sparse/base.py\u001b[0m in \u001b[0;36m__mul__\u001b[0;34m(self, other)\u001b[0m\n\u001b[1;32m    476\u001b[0m             \u001b[0;31m# scalar value\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 477\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_mul_scalar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mother\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    478\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda3/envs/pytorch/lib/python3.7/site-packages/scipy/sparse/data.py\u001b[0m in \u001b[0;36m_mul_scalar\u001b[0;34m(self, other)\u001b[0m\n\u001b[1;32m    122\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m_mul_scalar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mother\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 123\u001b[0;31m         \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_with_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdata\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mother\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    124\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda3/envs/pytorch/lib/python3.7/site-packages/scipy/sparse/compressed.py\u001b[0m in \u001b[0;36m_with_data\u001b[0;34m(self, data, copy)\u001b[0m\n\u001b[1;32m   1141\u001b[0m                                   \u001b[0mshape\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1142\u001b[0;31m                                   dtype=data.dtype)\n\u001b[0m\u001b[1;32m   1143\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda3/envs/pytorch/lib/python3.7/site-packages/scipy/sparse/compressed.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, arg1, shape, dtype, copy)\u001b[0m\n\u001b[1;32m    102\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 103\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcheck_format\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfull_check\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    104\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda3/envs/pytorch/lib/python3.7/site-packages/scipy/sparse/compressed.py\u001b[0m in \u001b[0;36mcheck_format\u001b[0;34m(self, full_check)\u001b[0m\n\u001b[1;32m    153\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 154\u001b[0;31m         \u001b[0midx_dtype\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_index_dtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindptr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindices\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    155\u001b[0m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindptr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0masarray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindptr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0midx_dtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda3/envs/pytorch/lib/python3.7/site-packages/scipy/sparse/sputils.py\u001b[0m in \u001b[0;36mget_index_dtype\u001b[0;34m(arrays, maxval, check_contents)\u001b[0m\n\u001b[1;32m    141\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 142\u001b[0;31m     \u001b[0mint32min\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0miinfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mint32\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmin\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    143\u001b[0m     \u001b[0mint32max\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0miinfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mint32\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmax\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda3/envs/pytorch/lib/python3.7/site-packages/numpy/core/getlimits.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, int_type)\u001b[0m\n\u001b[1;32m    504\u001b[0m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkey\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"%s%d\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkind\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbits\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 505\u001b[0;31m         \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkind\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0;34m'iu'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    506\u001b[0m             \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Invalid integer data type %r.\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkind\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: ",
      "\nDuring handling of the above exception, another exception occurred:\n",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-36-4252499eff98>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m     47\u001b[0m     \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpredicted\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmax\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0moutputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     48\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 49\u001b[0;31m     \u001b[0mclean_GAN_inputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mclean_GAN_inputs1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mclean_patch_inputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mclean_red_inputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mclean_pureGAN_inputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mGAN_patching_inputs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimages\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpredicted\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabels\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch_size\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     50\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     51\u001b[0m     \u001b[0mGAN_outputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnet\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mclean_GAN_inputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m<ipython-input-35-d8ad4a6ed018>\u001b[0m in \u001b[0;36mGAN_patching_inputs\u001b[0;34m(images, predicted, i, labels, bsize)\u001b[0m\n\u001b[1;32m     90\u001b[0m             \u001b[0moutput\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minputx\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# generate the output for the occluded input [0 1]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     91\u001b[0m             \u001b[0minpainted\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpoisson_blend_old\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx_mask\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moutput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmask\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# this is GAN output [0 1]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 92\u001b[0;31m             \u001b[0minpainted1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpoisson_blend_old1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx_mask\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moutput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmask\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# another blend method\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     93\u001b[0m             \u001b[0minpainted\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minpainted\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdevice\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     94\u001b[0m             \u001b[0minpainted1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minpainted1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdevice\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/gtsrb-pytorch-poison/utils.py\u001b[0m in \u001b[0;36mpoisson_blend_old1\u001b[0;34m(input, output, mask)\u001b[0m\n\u001b[1;32m    245\u001b[0m     \u001b[0;31m# apply poisson image editing method for each input/output image and mask.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    246\u001b[0m     \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnum_samples\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 247\u001b[0;31m         \u001b[0minpainted_np\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mblend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput_np\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moutput_np\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmask_np\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    248\u001b[0m \u001b[0;31m#         inpainted_np = newblend(input_np[i], output_np[i], mask_np[i])\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    249\u001b[0m         \u001b[0minpainted\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfrom_numpy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtranspose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minpainted_np\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/gtsrb-pytorch-poison/poissonblending.py\u001b[0m in \u001b[0;36mblend\u001b[0;34m(img_target, img_source, img_mask, offset)\u001b[0m\n\u001b[1;32m     76\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     77\u001b[0m         \u001b[0;31m# solve Ax = b\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 78\u001b[0;31m         \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpyamg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msolve\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mA\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mverb\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mtol\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1e-10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     79\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     80\u001b[0m         \u001b[0;31m# assign x to target image\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/blackbox.py\u001b[0m in \u001b[0;36msolve\u001b[0;34m(A, b, x0, tol, maxiter, return_solver, existing_solver, verb, residuals)\u001b[0m\n\u001b[1;32m    281\u001b[0m         \u001b[0mconfig\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msolver_configuration\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mA\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mB\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mverb\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mverb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    282\u001b[0m         \u001b[0;31m# Generate solver\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 283\u001b[0;31m         \u001b[0mexisting_solver\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msolver\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mA\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconfig\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    284\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    285\u001b[0m     \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda3/envs/pytorch/lib/python3.7/site-packages/pyamg/blackbox.py\u001b[0m in \u001b[0;36msolver\u001b[0;34m(A, config)\u001b[0m\n\u001b[1;32m    207\u001b[0m                                         keep=config['keep'])\n\u001b[1;32m    208\u001b[0m     \u001b[0;32mexcept\u001b[0m \u001b[0mBaseException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 209\u001b[0;31m         \u001b[0;32mraise\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Failed generating smoothed_aggregation_solver'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    210\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    211\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mTypeError\u001b[0m: Failed generating smoothed_aggregation_solver"
     ]
    }
   ],
   "source": [
    "# This section is to re-test the performance of the input after patching the input for poisoned images\n",
    "\n",
    "############### POISONED INPUTS #####################\n",
    "#####################################################\n",
    "\n",
    "\n",
    "from tqdm import tqdm_notebook\n",
    "from PIL import Image\n",
    "# Overall performance for clean inputs\n",
    "correct_GAN = 0\n",
    "correct_GAN1 = 0\n",
    "correct_patch = 0\n",
    "corrent_pureGAN = 0\n",
    "correct_red = 0 \n",
    "total = 0\n",
    "batch_size = 4\n",
    "class_GAN_correct = list(0. for i in range(43))\n",
    "class_GAN_correct1 = list(0. for i in range(43))\n",
    "class_patch_correct = list(0. for i in range(43))\n",
    "class_red_correct = list(0. for i in range(43))\n",
    "class_pureGAN_correct = list(0. for i in range(43))\n",
    "\n",
    "class_correct = list(0. for i in range(43))\n",
    "class_total = list(0. for i in range(43))\n",
    "\n",
    "class_GAN_predict = list(0. for i in range(43))\n",
    "class_GAN_predict1 = list(0. for i in range(43))\n",
    "class_patch_predict = list(0. for i in range(43))\n",
    "class_red_predict = list(0. for i in range(43))\n",
    "class_pureGAN_predict = list(0. for i in range(43))\n",
    "target = 7\n",
    "pbar = tqdm_notebook(total=round(len(testset)/batch_size), desc='Verifying the GAN results')\n",
    "\n",
    "for i, data in enumerate(testloader):\n",
    "#     if i < 100: \n",
    "\n",
    "    images, labels = data\n",
    "    true_labels = torch.tensor(labels)\n",
    "    images = poison(images)\n",
    "    images = images.type(torch.FloatTensor)\n",
    "    # labels = torch.ones(len(labels))*target\n",
    "    # labels = labels.type(torch.LongTensor)\n",
    "    images = images.to(device)\n",
    "    labels = labels.to(device)\n",
    "\n",
    "    outputs = net(images)\n",
    "    _, predicted = torch.max(outputs, 1)\n",
    "\n",
    "    clean_GAN_inputs, clean_GAN_inputs1, clean_patch_inputs, clean_red_inputs, clean_pureGAN_inputs = GAN_patching_inputs(images, predicted, i, labels, batch_size)\n",
    "\n",
    "    GAN_outputs = net(clean_GAN_inputs)\n",
    "    _, GAN_predicted = torch.max(GAN_outputs.data, 1)\n",
    "\n",
    "    GAN_outputs1 = net(clean_GAN_inputs1)\n",
    "    _, GAN_predicted1 = torch.max(GAN_outputs1.data, 1)\n",
    "\n",
    "    patch_outputs = net(clean_patch_inputs)\n",
    "    _, patch_predicted = torch.max(patch_outputs.data, 1)\n",
    "\n",
    "    red_outputs = net(clean_red_inputs)\n",
    "    _, red_predicted = torch.max(red_outputs.data, 1)\n",
    "\n",
    "    pureGAN_outputs = net(clean_pureGAN_inputs)\n",
    "    _, pureGAN_predicted = torch.max(pureGAN_outputs.data, 1)\n",
    "\n",
    "\n",
    "    c_GAN = (GAN_predicted == labels).squeeze()\n",
    "    c_GAN1 = (GAN_predicted1 == labels).squeeze()\n",
    "    c_patch = (patch_predicted == labels).squeeze()\n",
    "    c_red = (red_predicted == labels).squeeze()\n",
    "    c_pureGAN = (pureGAN_predicted == labels).squeeze()\n",
    "\n",
    "    total += labels.size(0)\n",
    "\n",
    "\n",
    "    correct_GAN += (GAN_predicted == labels).sum().item()\n",
    "    correct_GAN1 += (GAN_predicted1 == labels).sum().item()\n",
    "    correct_patch += (patch_predicted == labels).sum().item()\n",
    "    correct_red += (red_predicted == labels).sum().item()\n",
    "    corrent_pureGAN += (pureGAN_predicted == labels).sum().item()\n",
    "\n",
    "    pbar.set_description('Running | %.2f | %.2f | %.2f | %.2f | %.2f' % (correct_GAN*100/total, correct_GAN1*100/total, corrent_pureGAN*100/total, correct_red*100/total, correct_patch*100/total))\n",
    "    pbar.update()\n",
    "    # to calculate the correctness for each label\n",
    "\n",
    "    for j in range(len(true_labels)):\n",
    "        label = labels[j]\n",
    "        GAN_predict = GAN_predicted[j]            \n",
    "        GAN_predict1 = GAN_predicted1[j]\n",
    "        patch_predict = patch_predicted[j]\n",
    "        red_predict = red_predicted[j]\n",
    "        pureGAN_predict = pureGAN_predicted[j]\n",
    "        classification_result = predicted[j]\n",
    "        if(GAN_predict != label): # To store wrong classification result to the folder\n",
    "#             images[j] = unnormalize(images[j], mean, std) # convert from [-1 1] to [0 1]\n",
    "#             clean_GAN_inputs[j] = unnormalize(clean_GAN_inputs[j], mean, std) # convert from [-1 1] to [0 1]\n",
    "#             clean_pureGAN_inputs[j] = unnormalize(clean_pureGAN_inputs[j], mean, std) # convert from [-1 1] to [0 1]\n",
    "#             clean_patch_inputs[j] = unnormalize(clean_patch_inputs[j], mean, std)\n",
    "#             clean_red_inputs[j] = unnormalize(clean_red_inputs[j], mean, std)\n",
    "            ori_pic = torch.unsqueeze(images[j], 0)\n",
    "            GAN_blend = torch.unsqueeze(clean_GAN_inputs[j], 0)\n",
    "            GAN_pure = torch.unsqueeze(clean_pureGAN_inputs[j], 0)\n",
    "            patch_pic = torch.unsqueeze(clean_patch_inputs[j], 0)\n",
    "            red_pic = torch.unsqueeze(clean_red_inputs[j], 0)\n",
    "\n",
    "\n",
    "\n",
    "            # This place is to work with PIL to draw images of multiple images and print the predicted \n",
    "            # -------------------------------------------------\n",
    "#                 print(images[j].dtype)\n",
    "#                 print(images[j].shape)\n",
    "#                 ori_pic_pil = Image.fromarray(np.uint8(cm.gist_earth(images[j].cpu().numpy())*255))\n",
    "#                 GAN_pic_pil = Image.fromarray(np.uint8(cm.gist_earth(clean_GAN_inputs[j].cpu().numpy())*255))\n",
    "#                 background = Image.new('RGBA', (64,64), (255,255,255,255))\n",
    "#                 bg_w, bg_h = background.size\n",
    "#                 offset1 = (0,0)\n",
    "#                 background.paste(ori_pic_pil, offset1)\n",
    "#                 background.show()\n",
    "\n",
    "\n",
    "            # -------------------------------------------------\n",
    "\n",
    "            save_imgs = torch.cat((ori_pic.cpu(), GAN_blend.cpu(), GAN_pure.cpu(), red_pic.cpu(), patch_pic.cpu()), dim=0) # combine images for illustration\n",
    "#                 save_imgs = save_imgs.numpy()\n",
    "#                 print(save_imgs.shape)\n",
    "#                 im = Image.fromarray(save_imgs)\n",
    "#                 im.save(\"test.jpg\")\n",
    "            save_image(save_imgs, \"GAN_wrong/\" + str(labels.cpu().numpy()[j]) + \"/\" + str(i).zfill(4) + \"_out_\" + str(j) + \".png\", nrow=5)\n",
    "        class_GAN_correct[label] += c_GAN[j].item()\n",
    "        class_GAN_correct1[label] += c_GAN1[j].item()\n",
    "        class_patch_correct[label] += c_patch[j].item()\n",
    "        class_red_correct[label] += c_red[j].item()\n",
    "        class_pureGAN_correct[label] += c_pureGAN[j].item()\n",
    "\n",
    "\n",
    "        class_GAN_predict[GAN_predict] += 1\n",
    "        class_GAN_predict1[GAN_predict1] += 1\n",
    "        class_patch_predict[patch_predict] += 1\n",
    "        class_red_predict[red_predict] += 1\n",
    "        class_pureGAN_predict[pureGAN_predict] +=1\n",
    "\n",
    "        class_total[label] += 1\n",
    "        print(class_total)\n",
    "            \n",
    "            \n",
    "#     else:\n",
    "#         break\n",
    "\n",
    "pbar.close()\n",
    "print(correct_GAN)\n",
    "print(correct_GAN1)\n",
    "print(corrent_pureGAN)\n",
    "print(correct_red)\n",
    "print(correct_patch)\n",
    "print(total)\n",
    "\n",
    "\n",
    "print('Accuracy of GAN blend for the network on the 10000 test images: %.3f %%' % (\n",
    "    100 * correct_GAN / total))\n",
    "print('Accuracy of GAN blend1 for the network on the 10000 test images: %.3f %%' % (\n",
    "    100 * correct_GAN1 / total))\n",
    "print('Accuracy of GAN pure output for the network on the 10000 test images: %.3f %%' % (\n",
    "    100 * corrent_pureGAN / total))\n",
    "print('Accuracy of red patch for the network on the 10000 test images: %.3f %%' % (\n",
    "    100 * correct_red / total))\n",
    "print('Accuracy of patch for the network on the 10000 test images: %.3f %%' % (\n",
    "    100 * correct_patch / total))\n",
    "\n",
    "print(\"GAN blend correct for each label\\n\")\n",
    "for i in range(43):\n",
    "    print('Accuracy of %5s : %.3f %%' % (\n",
    "        classes[i], 100 * class_GAN_correct[i] / class_total[i]))\n",
    "print(\"GAN blend1 correct for each label\\n\")\n",
    "for i in range(43):\n",
    "    print('Accuracy of %5s : %.3f %%' % (\n",
    "        classes[i], 100 * class_GAN_correct1[i] / class_total[i]))\n",
    "    \n",
    "print(\"GAN pure output correct for each label\\n\")\n",
    "for i in range(43):\n",
    "    print('Accuracy of %5s : %.3f %%' % (\n",
    "        classes[i], 100 * class_pureGAN_correct[i] / class_total[i]))\n",
    "print(\"patch red correct for each label\\n\")\n",
    "for i in range(43):\n",
    "    print('Accuracy of %5s : %.3f %%' % (\n",
    "        classes[i], 100 * class_red_correct[i] / class_total[i]))\n",
    "print(\"patch correct for each label\\n\")\n",
    "for i in range(43):\n",
    "    print('Accuracy of %5s : %.3f %%' % (\n",
    "        classes[i], 100 * class_patch_correct[i] / class_total[i]))\n",
    "\n",
    "\n",
    "print(\"GAN predicts correct {}\".format(class_GAN_correct))\n",
    "print(\"GAN1 predicts correct {}\".format(class_GAN_correct1))\n",
    "print(\"GAN pure output predicts correct {}\".format(class_pureGAN_correct))\n",
    "print(\"patch red predicts correct {}\".format(class_red_correct))\n",
    "print(\"patch predicts correct {}\".format(class_patch_correct))\n",
    "print(\"total class is {}\".format(class_total))\n",
    "\n",
    "print(\"The predicted result of GAN is {}\".format(class_GAN_predict))\n",
    "print(\"The predicted result of GAN1 is {}\".format(class_GAN_predict1))\n",
    "print(\"The predicted result of pure GAN is {}\".format(class_pureGAN_predict))\n",
    "print(\"The predicted result of red patch is {}\".format(class_red_predict))\n",
    "print(\"The predicted result of patch is {}\".format(class_patch_predict))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# This is GradCAM implementation\n",
    "from grad_cam import (\n",
    "    BackPropagation,\n",
    "    Deconvnet,\n",
    "    GradCAM,\n",
    "    GuidedBackPropagation,\n",
    "    occlusion_sensitivity,\n",
    ")\n",
    "target_layer = \"features.12\"\n",
    "gcam = GradCAM(model=net)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
